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

Posted

技术标签:

【中文标题】更改页面后复选框列表保持初始状态【英文标题】:List of checkboxs keep initial state after changing page 【发布时间】:2021-06-15 12:23:40 【问题描述】:

我正在使用 Angular 9,并且我有一个复选框列表,默认情况下需要将这些复选框设置为 true 以列出一些数据。在取消选中其中一个复选框时,它应该显示某些数据。 我遇到的问题是,当我取消选中并尝试导航到另一个页面时,这些复选框保持未选中状态,这是我不想要的,因为默认情况下导航到新页面时,这些复选框需要设置为 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]: [] 
      );
    );
  

感谢您的友好反馈和帮助

【问题讨论】:

【参考方案1】:

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

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

希望我能帮上忙。

【讨论】:

以上是关于更改页面后复选框列表保持初始状态的主要内容,如果未能解决你的问题,请参考以下文章

页面刷新JavaScript,Spring Boot时如何保持复选框处于选中状态?

单击操作栏项目复选框时,更改其状态

页面刷新后保留选择复选标记

如何使用 jQuery 处理复选框的初始状态和更改?

单击列表项更改复选框状态?

如何在提交后保持数组和动态复选框保持检查状态?