Мы используеммодифицирующим компонентом определено в TestBed.overrideComponent
TestBed.overrideComponent(CoolComponent, {
set: {
template: '<div id="fake-component">i am the fake component</div>',
selector: 'our-cool-component',
inputs: [ 'model' ]
}
})
переопределить компонент.
компонент имеет ViewChild, который мы настраиваем в нашем методе ngOnInit
@Component({
selector: 'our-cool-component',
templateUrl: 'cool.component.html'
})
export class CoolComponent implements OnInit, OnDestroy {
@Input() model: SomeModel
@ViewChild(CoolChildComponent) coolChildComponent;
ngOnInit() {
this.coolChildComponent.doStuff();
}
}
CoolComponent
в свою очередь, живет в Wrapper
компоненте.
Когда мы называем fixture.detectChanges()
на Wrapper
арматуре, это попытка построить CoolComponent, но он сразу же умирает, когда он вызывает DoStuff(), потому что CoolChildComponent
не определено.
Есть ли способ добраться до CoolComponent
, чтобы заглушить его CoolChildComponent
? Не похоже, что мы можем получить его с Wrapper
, потому что он ссылается только на шаблон, а не как свойство компонента.
Я только что добавил щедрость, видимо, вы не сообщили (http://meta.stackoverflow.com/q/333838/3001761) – jonrsharpe
Это когда-либо работало? Работает ли он, когда вы запускаете его в браузере (или как вы планируете)? Является ли это проблемой только для тестирования? – j2L4e