![](/img/trans.png)
[英]ngmodelchange called when mat-option selected in angular material
[英]Angular material 2 - How to keep mat-option selected when switching routes?
我尝试使用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>
选择组件:
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);
});
}
当您离开时,您的组件将被破坏。 这意味着您拥有的任何变量都会被销毁。
为了保持价值,您可以使用服务或本地/会话存储。
(我建议使用服务,但这是我个人的看法)。
顺便说一句, ngOnChanges
仅与Inputs( @Input
)一起使用,我非常怀疑您是否将在路由组件中包含输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.