@Input 的默认值被测试包装器中的“undefined”覆盖
Default value for @Input is overwritten by `undefined` in test wrapper
我的组件上有以下输入:
@Input()
someThing: string = 'm'; // default value
在我的测试中,我将其定义为:
@Component({
selector: 'app-test-wrapper-component',
template: `
<app-my-component someThing="someThing" />
`
})
class TestWrapperComponent {
someThing; // this needs to be defined, otherwise the template above won't recognize it
}
在这种情况下 someThing
是 undefined
。我的组件现在呈现 someThing = undefined
.
在未定义或 null 的情况下,如何确保 @Input 是默认值 'm'?
啊,知道了。看起来使用 @Input
装饰器设置它不是可行的方法,而是:
export class MyComponent implements Oninit, AfterContentInit {
private defaultValue: any = 'm';
@Input()
someThing: any;
ngOnInit(): void {
console.log(this.something || this.defaultValue);
}
这样,定义的时候就用this.something
,否则fallback就是this.defaultValue
.
我的组件上有以下输入:
@Input()
someThing: string = 'm'; // default value
在我的测试中,我将其定义为:
@Component({
selector: 'app-test-wrapper-component',
template: `
<app-my-component someThing="someThing" />
`
})
class TestWrapperComponent {
someThing; // this needs to be defined, otherwise the template above won't recognize it
}
在这种情况下 someThing
是 undefined
。我的组件现在呈现 someThing = undefined
.
在未定义或 null 的情况下,如何确保 @Input 是默认值 'm'?
啊,知道了。看起来使用 @Input
装饰器设置它不是可行的方法,而是:
export class MyComponent implements Oninit, AfterContentInit {
private defaultValue: any = 'm';
@Input()
someThing: any;
ngOnInit(): void {
console.log(this.something || this.defaultValue);
}
这样,定义的时候就用this.something
,否则fallback就是this.defaultValue
.