我正在处理这样的遗留代码:
@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。
答案 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-显示>