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);
    });
  }