复选框列表在更改页面后保持初始状态

List of checkboxs keep initial state after changing page

我正在使用 angular 9,我有一个复选框列表,需要将这些复选框默认设置为 true 以列出一些数据。取消选中其中一个复选框后,它应该显示某些数据。 我遇到的问题是,当我取消选中并尝试导航到另一个页面时,那些复选框保持未选中状态,这是我不想要的,因为默认情况下,当导航到新页面时,这些复选框需要设置为真 如何保持默认状态,即在从一页导航到另一页时始终将复选框列表设置为 true

在我的子组件中

  public checkboxItems: CheckboxToggleGroupItem[] = [
    { label: 'outofservice', formControl: new FormControl(null) },
    { label: 'employment', formControl: new FormControl(null)},
  ];

  constructor(private translateService: TranslateService) {
    combineLatest(this.checkboxItems.map(({ formControl }: CheckboxToggleGroupItem) => formControl.valueChanges))
      .pipe(
        skipWhile(() => !this.data),
        takeUntil(this.destroy$)
      )
      .subscribe(([outOfServiceValue, employmentValue]) => {
          this.filterByType(outOfServiceValue, employmentValue);
      });
  }
public ngOnInit(): void {
this.checkboxItems.forEach(({ formControl }: CheckboxToggleGroupItem) => formControl.setValue(true));
    this.data$?.pipe(takeUntil(this.destroy$)).subscribe((data: Data) => {
      this.data = data?.Report?.ReportPerYears?.reduce(
        (accumulator: ReportByTypeAndYear, nextValue: ReportPerYearViewModel) => ({
          ...this.groupDataByType(ReportType.Employment, accumulator, nextValue),
          ...this.groupDataByType(ReportType.OutOfService, accumulator, nextValue),
        }),
        { [ReportType.Employment]: [], [ReportType.OutOfService]: [] }
      );
    });
  }

感谢您的反馈和帮助

我建议将您的(控件)复选框放入 FormGroup。

  • 您可以将 FromControl 的初始值设置为 true。
  • 尝试使用 .patchValue() 而不是 .setValue()
  • 如果从代码设置值,总是调用 .updateValueAndValidity()。

希望能帮到你。