使用我自己的自定义组件,并坚持如何使其同时使用属性和变量。我使用的是@Input属性指令,当我传入正确范围的变量时,它可以工作。
组件(有效)<mycomp [arrayValue]= "someArrayVar">html</mycomp>
但我不确定要完成这项工作需要做什么??
组件(不起作用)<mycomp arrayValue= "[1,2,3,4,5]">html</mycomp>
我的指令看起来像这样...
指示
export class MyComp implements DoCheck, OnInit {
@Input() arrayValue: number[];
任何人都可以解释我将如何实现输入别名和属性,以在不使用变量且像
"[1,2,3,4,5]"
这样的字符串进行传递时进行传递,我们将不胜感激 最佳答案
arrayValue="[1,2,3,4,5]"
会将您提供的值作为字符串传递。如果您真的想通过这种方式传递数组,则必须自己解析(例如,使用JSON.parse
),可能是在arrayValue
的getter中进行解析。
@Input() get arrayValue(value: string | number[]) {
if (typeof value == 'string') {
this._arrayValue = JSON.parse(value)
} else {
this._arrayValue = value
}
}
但是问题是,为什么要这样做?不推荐。
关于javascript - Angular 2通过属性将数组传递给指令不可变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45291325/