使用我自己的自定义组件,并坚持如何使其同时使用属性和变量。我使用的是@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/

10-12 00:59