Angular 2 @Input数量问题

Ser*_*nho 5 types typescript angular

我有以下组件:

<component value="3"></component>
Run Code Online (Sandbox Code Playgroud)

组件代码是:

  private _value:number;

  get value(): number {
    return this._value;
  }

  @Input()
  set value(value: number) {
    console.log(value);
    console.log(typeof value);
    this._value = value;
  }
Run Code Online (Sandbox Code Playgroud)

日志是:

3
string
Run Code Online (Sandbox Code Playgroud)

但是,如果我绑定属性,如:

<component [value]="variable1"></component>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果variable1是类型编号,我会得到一个数字.

3
number
Run Code Online (Sandbox Code Playgroud)

我知道打字稿没有魔力,但这是正确的行为吗?Angular Input装饰器应该进行转换吗?

我正在检查setter中的类型,但是当typescript正在编译时我会遇到错误.

我不想在gettes和setter中使用type any.

任何优雅的解决方

rin*_*usu 5

使用括号绑定时[],该值直接绑定在对象上.

使用属性绑定,引号之间的值将作为字符串处理.

也许看看文档.


工作Plunker例如用法

  • 好的,对不起,我没有动摇你的意思.现在我不知所措 (2认同)