2016-07-04 38 views
14

我需要使用綁定將值數組傳遞給組件,例如,如何從組件模板傳遞數組作爲Input()?

@Component({ 
    selector: 'my-component', 
    template: '<div data="[1, 2, 'test']"></div> 
}) 
export class MyComponent { 
    @Input() data: any[]; 
    ... 
} 

但是,似乎角將此視爲string/string[1](在實際工程中的數組是一個途徑,我需要傳給這條路到具有[routerLink]指令的組件)。

我該如何解決這個問題?

回答

21

您需要[]否則它不會被角都處理包屬性:

[data]="[1, 2, 'test']" 

你的例子似乎設置data從組件內。這不是綁定的工作原理。你可以用你的組件做什麼<my-component [data]="[1, 2, 'test']"></my-component>將數據從外部傳遞到你的組件。

1

通常,只有在組件嵌套在另一個組件中時才使用輸入。

因此,在另一個組件,是這樣的:<my-component [data]= ...>

1

因此讓我們的從這裏開始......在角2+所有投入將向下傳遞一個字符串,如果他們沒有得到周圍括號...

因此,有2種方式向下傳遞自己的價值觀......

如果你寫這樣的:'<div data="[1, 2, 'test']"'

你基本上把它作爲「[1,2,‘測試’]」 (作爲字符串)...

您的方式是傳遞字符串的好方法,您還可以使用插值並將它與JavaScript混合,然後像'Angular {{version}}'

所以傳遞下來數組或任何JavaScript無刺值,你需要使用[]在你輸入這樣的...

<div [data]="[1, 2, 'test']"></div> 
相關問題