如何从组件模板中将数组作为 Input() 传递?
How can I pass an array as Input() from the component template?
我需要使用绑定将值数组传递给组件,例如
@Component({
selector: 'my-component',
template: '<div data="[1, 2, 'test']"></div>
})
export class MyComponent {
@Input() data: any[];
...
}
然而,似乎Angular将其视为string
/string[1]
(在实际项目中,数组是一条路线,我需要将这条路线传递给一个组件有 [routerLink]
指令)。
我该怎么做?
您需要用 []
包裹 属性 否则它根本不会被 Angular 处理:
[data]="[1, 2, 'test']"
您的示例似乎是从组件内部设置 data
。这不是绑定的工作方式。你可以用你的组件做的是 <my-component [data]="[1, 2, 'test']"></my-component>
将数据从外部传递到你的组件。
通常只有当组件嵌套在另一个组件中时才使用输入。
所以在另一个组件中,类似于:<my-component [data]= ...>
所以让我们从这里开始...在 Angular 2+ 中,如果没有括号,所有输入都将传递一个字符串...
所以有两种方法可以传递您的价值观...
如果这样写:'<div data="[1, 2, 'test']"'
你基本上得到它作为“[1, 2, 'test']”(作为字符串)...
你这样做是传递字符串的好方法,你也可以使用插值并将它与javascript混合,然后像[=一样传递它30=]
因此,要将其作为数组或任何 javascript none 字符串值传递,您需要像这样在输入周围使用 []
...
<div [data]="[1, 2, 'test']"></div>
我需要使用绑定将值数组传递给组件,例如
@Component({
selector: 'my-component',
template: '<div data="[1, 2, 'test']"></div>
})
export class MyComponent {
@Input() data: any[];
...
}
然而,似乎Angular将其视为string
/string[1]
(在实际项目中,数组是一条路线,我需要将这条路线传递给一个组件有 [routerLink]
指令)。
我该怎么做?
您需要用 []
包裹 属性 否则它根本不会被 Angular 处理:
[data]="[1, 2, 'test']"
您的示例似乎是从组件内部设置 data
。这不是绑定的工作方式。你可以用你的组件做的是 <my-component [data]="[1, 2, 'test']"></my-component>
将数据从外部传递到你的组件。
通常只有当组件嵌套在另一个组件中时才使用输入。
所以在另一个组件中,类似于:<my-component [data]= ...>
所以让我们从这里开始...在 Angular 2+ 中,如果没有括号,所有输入都将传递一个字符串...
所以有两种方法可以传递您的价值观...
如果这样写:'<div data="[1, 2, 'test']"'
你基本上得到它作为“[1, 2, 'test']”(作为字符串)...
你这样做是传递字符串的好方法,你也可以使用插值并将它与javascript混合,然后像[=一样传递它30=]
因此,要将其作为数组或任何 javascript none 字符串值传递,您需要像这样在输入周围使用 []
...
<div [data]="[1, 2, 'test']"></div>