ngOnInit() {
let isTest: boolean = this.isTest || false;
this.isTest: boolean = this.isTest || false;
}
使用let
已编译的代码变为var isTest = this.isTest || false
正如您所期望的那样,但在分配给this
时,它变为:
this.isTest;
boolean = this.isTest || true;
并且还会抛出错误boolean is not defined
,这是有道理的。
然而,我不明白为什么我无法按照我this
的方式定义属性的类型。
为什么这样做以及正确的做法是什么?
编辑:
显然你不能在方法中声明类成员,但与@NitzanTomer相同的解决方案是否适用于Angular 2的组件输入属性?
示例:
@Component({
selector: 'test',
inputs: [
'isTest'
]
})
export class isTest implements OnInit {
isTest: boolean;
ngOnInit() {
this.isTest = this.isTest || false;
}
}
答案 0 :(得分:4)
你不能在方法中声明类成员,它应该是:
class YourClass {
isTest: boolean;
ngOnInit() {
this.isTest = this.isTest || false;
}
...
}
您也可以在构造函数中声明类成员,如下所示:
class YourClass {
constructor(private isTest: boolean) { }
}
我不是一个有角度的开发人员,但基于示例,您似乎需要像我回答的那样做,只是有时你用@Input
装饰这些成员。
@Component({
selector: 'hero-child',
template: `
<h3>{{hero.name}} says:</h3>
<p>I, {{hero.name}}, am at your service, {{masterName}}.</p>
`
})
export class HeroChildComponent {
@Input() hero: Hero;
@Input('master') masterName: string;
}
或者:
@Component({
selector: 'hero-parent',
template: `
<h2>{{master}} controls {{heroes.length}} heroes</h2>
<hero-child *ngFor="let hero of heroes"
[hero]="hero"
[master]="master">
</hero-child>
`
})
export class HeroParentComponent {
heroes = HEROES;
master: string = 'Master';
}