Angular 角材质2-切换路线时如何保持mat选项处于选中状态?
我尝试使用Angular 角材质2-切换路线时如何保持mat选项处于选中状态?,angular,angular-material,angular-material2,Angular,Angular Material,Angular Material2,我尝试使用ngOnChanges在选择一个值后切换时保留先前选择的选项,然后返回上一条路线,但所选选项默认返回为“无”。如何在交换路由之间跟踪最近选择的选项 这是我的密码: 选择视图: <mat-select placeholder="Choose a pair" [(ngModel)]="selectedValue" (ngModelChange)="emit($event)"> <mat-option>--None--</mat-option>
ngOnChanges
在选择一个值后切换时保留先前选择的选项,然后返回上一条路线,但所选选项默认返回为“无”。如何在交换路由之间跟踪最近选择的选项
这是我的密码:
选择视图:
<mat-select placeholder="Choose a pair" [(ngModel)]="selectedValue"
(ngModelChange)="emit($event)">
<mat-option>--None--</mat-option>
<mat-option *ngFor="let token of tokens" [value]="token.id">
{{token.name}}
</mat-option>
</mat-select>
<a *ngFor="let token of tokens" [routerLink]="['/tokens/', token.id]">
<span *ngIf="selectedValue===token.id">
More about {{token.name}}
</span>
</a>
当您离开时,您的组件将被销毁。这意味着您在其中拥有的任何变量都会随之销毁 要保留值,可以使用服务或本地/会话存储 (我建议使用一项服务,但这是我个人的意见)
顺便说一句,
ngOnChanges
仅适用于输入(@Input
),我非常怀疑在路由组件中是否会有输入 当您离开时,您的组件将被破坏。这意味着您在其中拥有的任何变量都会随之销毁
要保留值,可以使用服务或本地/会话存储
(我建议使用一项服务,但这是我个人的意见)
顺便说一句,
ngOnChanges
仅适用于输入(@Input
),我非常怀疑在路由组件中是否会有输入 对,我可以试试服务对,我可以试试服务
selectedValue: any;
tokens: any;
constructor(
private apiService: ApiService,
private sharedService: SharedService
) {
}
ngOnInit() {
this.loadTokens();
}
ngOnChanges() {
if (this.selectedValue) {
this.selectedValue = this.tokens.find(i => i.id === this.selectedValue.id
&& i.name === this.selectedValue.name);
}
}
emit(selectedValue) {
this.sharedService.pair.next(selectedValue);
}
loadTokens() {
this.apiService.getTokens()
.subscribe((data: any) => {
this.tokens = data;
}, error => {
console.log(error);
});
}