How can I pass an array as Input() from the component template?
Solution 1:
You need to wrap the property with []
otherwise it is not processed by Angular at all:
[data]="[1, 2, 'test']"
Your example seems to set data
from inside the component. This is not how binding works. What you can do with your component is <my-component [data]="[1, 2, 'test']"></my-component>
to pass data from the outside to your component.
Solution 2:
So lets's start from here... in Angular 2+ all input will pass down a string if they don't get brackets around...
So there are 2 ways to pass down your values...
if you write it like this: '<div data="[1, 2, 'test']"'
you basically get it as "[1, 2, 'test']" (as string)...
The way you doing is a good way for passing down strings, and you can also use interpolation and mix it with javascript before passing it down like 'Angular {{version}}'
So to pass it down as an Array or any javascript none-sting value, you need to use []
around your input like this...
<div [data]="[1, 2, 'test']"></div>
Solution 3:
Normally you only use input when the component is nested within another component.
So in another component, something like: <my-component [data]= ...>