@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
}

在这种情况下 someThingundefined。我的组件现在呈现 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.