如何使用" @input set"检索数据在Typescript和Angular 2中?

时间:2017-06-01 20:39:15

标签: javascript angular typescript

我正在处理这样的遗留代码:

@Input() set ratio (ratio: { w: number, h: number }) { this._ratio = ratio || null; }
...
console.log(this._ratio.h);

我的问题是我应该在HTML中添加什么才能读取那样的var?我尝试了不同的东西,比如

ratio="30,30"
ratio="{w:30,h:30}"
[ratio]="..."

等。我无法正确设置var。

1 个答案:

答案 0 :(得分:2)

你还需要 get 来获得比率,否则你的第二个版本是正确的。





这是一个例子

& #xA;

  @Component({
 selector:'ratio-display',
 template:'< span> {{ratio.w / ratio.h} }< / span>'
})
导出类RatioDisplay {
 ratio_ = {w:1,h:1};

 @Input()设置比率(比率:{w:number,h:number}){
 if(ratio){
 this.ratio_ =比率; 
 }
 }
得分比率(){
 return this.ratio _;
 }
}

 @Component({
 selector:'app',
 template:`
< div>
< ratio -display [ratio] =“ratio”>< / ratio- display>
< / div>
`,
})
 export class App {&#xA ; ratio = {w:30,h:45};
}
  




可在此处找到工作的Plnkr: https://plnkr.co/edit/4TuMEzfDB6hxyGbC6csQ?p=preview

& #xA;


当然,在这种情况下你需要一个setter的唯一原因是如果想要防止传递无效组件,如果你只想要一个简单的值来绑定,你可以使用




  @Component({
 selector:'ratio-display',
 template:'< span> {{ratio.w / ratio.h}}< / span>'
})
导出类RatioDisplay {
 @Input()ratio = {w:1,h:1};
}
  




对象文字也可以是直接从你的模板传递




 < ratio-display [ratio] =“{w:30,h:45}”>< / ratio-显示>
  




https://plnkr.co/edit/4TuMEzfDB6hxyGbC6csQ?p=preview