我在角度(版本 8)组件 A 和 B 之间传递数据state
,例如:
<a routerLink="/componentB" [state]="{data: {hello: 'world'}}">Go To ComponentB</a>
在 ComponentB 中,我正在读取数据:
ngOnInit() {
this.data = history.state.data.hello;
}
一切都在 live webapp 中工作,但我似乎无法在 jasmine 测试中复制相同的内容。单元测试是这样的:
setup();
...
fixture.nativeElement.querySelector(`a`).click();
fixture.whenStable().then(() => {
expect(fixture.nativeElement.querySelector(`p`)).toContain('world');
}
导航在添加this.data = ...
到之前有效ngOnInit()
,但现在出现空指针异常。实际上state
是null
,但我不知道为什么。实时运行 webapp 时一切正常,但 Jasmine 单元测试失败。
我知道我可以添加history.pushState({data: {hello: 'world'}}, '', '');
到设置中,但我希望在单元测试期间将真实数据从组件 A 传递到组件 B。我错过了什么?为什么来自一个组件的数据不会通过 传输到另一个组件state
?