我使用state
在角度(版本8)分量A和B之间传递数据,例如:
<label for="{{radio1.id}}" class="radio" (click)="radioSelected(radio1.label)">
<input type="radio" id="{{radio1.id}}" name="optionsRadio41" value="{{radio1.value}}" required="" [disabled]="requestGroupName == 'SERVICE_GROUP'" [checked]="GroupName ==='ACCESS_GROUP'">
<i class="skin"></i>
<span>Within this solution</span>
</label>
<label for="{{radio2.id}}" class="radio" (click)="radioSelected(radio2.label)">
<input type="radio" id="{{radio2.id}}" [checked]="GroupName ==='SERVICE_GROUP'" name="optionsRadio41" value="{{radio2.value}}" required="">
<i class="skin"></i>
<span>Copy to a different solution</span>
</label>
<div *ngIf="radioSelectedLabel=='Within this solution'">first block </div>
<div *ngIf="radioSelectedLabel=='Within this solution'">second block</div>
在ComponentB中,我正在读取数据:
<a routerLink="/componentB" [state]="{data: {hello: 'world'}}">Go To ComponentB</a>
一切都可以在实时Web应用程序中运行,但是我似乎无法在茉莉花测试中复制相同的内容。 单元测试如下:
ngOnInit() {
this.data = history.state.data.hello;
}
在将setup();
...
fixture.nativeElement.querySelector(`a`).click();
fixture.whenStable().then(() => {
expect(fixture.nativeElement.querySelector(`p`)).toContain('world');
}
添加到this.data = ...
之前,导航有效,但是现在存在空指针异常。实际上,ngOnInit()
是state
,但我不知道为什么。实时运行webapp时一切正常,但是Jasmine单元测试失败。
我知道我可以添加null
来进行设置,但是我希望在单元测试期间将真实数据从componentA传递到componentB。我想念什么?为什么一个组件中的数据不能通过history.pushState({data: {hello: 'world'}}, '', '');
传输到另一个组件中?