在 Angular 8 中导航到另一个组件后如何保存组件的状态

How can I save the state of a component after navigating to another component in Angular 8

我有 2 个组件:HomeComponent 和 CityComponent。他们没有任何关系。 导航回 HomeComponent 后,当我再次导航到它时,CityComponent 的状态丢失了。我怎样才能保存状态?有什么想法吗?

您应该阅读有关应用程序路由组件的信息。基本上你应该有一个文件 app-routing.modul.ts 这里是 official angular link

您可以使用服务来记住路由之间的状态,因为它们通常是单例。状态 Behavior Subject 可以存储一个对象,其中包含您可能想要记住的任何状态,因此每次初始化组件时,您所要做的就是通过 .getValue()state$ 中检索当前值服务。此外,当您更新任何状态值时,您应该记得更新存储在服务中的状态。

state.service.ts

@Injectable({
  providedIn: "root"
})
export class StateService {
  state$ = new BehaviorSubject<any>(null);
}

city.component.ts

export class CityComponent implements OnInit {
  constructor(private stateService: StateService) {}
  state: any;
  ngOnInit() {
    this.state = this.stateService.state$.getValue() || {};
  }

  updateFoo(val: any) {
    this.state.foo = val;
    this.stateService.state$.next(state);
  }

city.component.html

<p>{{state.foo}}</p>