html - 无法分配给类型错误的 Angular BehaviourSubject 问题

标签 html angular typescript

我有一个带有 Angular 和 typescript 的简单表格。我将表数据从父类发送到子类(包括表),在此示例中数据名称是 _domainData。它正在正确获取数据,但我想在表上显示它,但我不知道如何将它分配给我的主表数据变量 domain_Data

如示例所示:如果我在 ngOnInit() 方法中说 this.domain_Data = this._domainData;

@Component({
  selector: 'mg-domain-display',
  templateUrl: './domain-display.component.html',
  styleUrls: ['./domain-display.component.scss']
})
export class DomainWhiteListingDisplayComponent implements OnInit {

  private _domainData = new BehaviorSubject<Domain[]>([]);

  displayedColumns = ['id', 'domain'];
  domain_Data: Domain[] = [];

  @Input()
  set domainData(value: Domain[]) {
    this._domainData.next(value);
  }
  get domainData() {
    return this._domainData.getValue();
  }

  constructor(private globalSettingService: GlobalSettingsService, private dialog: MatDialog) {
  }

  ngOnInit() {
    this.domain_Data = this._domainData;
  }

}

错误是 Type:BehaviourSubject is not assignable to type Domain[]。 “BehaviourSubject”类型中缺少属性“includes”

正如我所说,我的主表数据变量是 domain_Data:

<mat-table #table [dataSource]="domain_Data">

最佳答案

需要订阅并从BehaviorSubject中获取值

  ngOnInit() {
    this._domainData.subscribe((data) => this.domain_Data = data);
  }

或者,正如很少有人评论的那样,您可以使用 async 管道在模板中订阅:

<mat-table #table [dataSource]="domain_Data | async">

通常,如果您不需要处理组件中的数据,最好使用 async 管道,因为它会自动取消订阅。

关于html - 无法分配给类型错误的 Angular BehaviourSubject 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53855112/

相关文章:

javascript - 在重复嵌套的数组中查找对象和父对象

javascript - 谷歌地图信息窗口中的按钮可访问页面的功能

php - 在 php 电子邮件中以图像为中心的问题

python - Angular.js 和 Genshi - 使用 $ 发生冲突

angular - Angular 2 中的语法高亮显示

c# - 带有 Angular 6 捆绑文件的项目模板的 ASP.NET Core 404(错误的 dist 输出目录)

html - css z-index,内容在彼此后面显示

javascript - 两个独立的滚动区域简单的解决方案

javascript - Angular => react 形式 : disable button when it encounters an empty input field

javascript - typescript 编译为单个文件