angular - TS2339:“行为主题”类型上不存在属性“排序”
我正在寻找使用角度材料创建动态表,我可以在其中动态添加/删除数据。作为 Angular 的新手,我参考了 stackblitz 来创建表格。
问题描述
我正在寻找使用角度材料创建动态表,我可以在其中动态添加/删除数据。作为 Angular 的新手,我参考了 stackblitz 来创建表格。
https://stackblitz.com/edit/angular-material-editable-table-fazhbc
虽然我的所有更改都有效 - 我无法对数据进行排序
ngAfterViewInit() {
this.dataSource.sort = this.matSort;
}
我得到 TS2339 的错误:类型上不存在属性“排序”'BehaviorSubject<AbstractControl[]
是不是像材料表数据源那样支持排序,还是我遗漏了什么?
您也可以使用rxjsfromEventPattern
中的函数。
private createOnClickObservable(renderer: Renderer2) {
let removeClickEventListener: () => void;
const createClickEventListener = (
handler: (e: Event) => boolean | void
) => {
removeClickEventListener = renderer.listen("document", "click", handler);
};
this.onClick$ = fromEventPattern<Event>(createClickEventListener, () =>
removeClickEventListener()
).pipe(takeUntil(this._destroy$));
}
只需按预期使用/订阅它
myMouseService.onClick$.subscribe((e: Event) => {
console.log("CLICK", e);
});
并且不用担心破坏,它会在关闭 observable 时由 rxjs 处理!
现场演示:https ://stackblitz.com/edit/angular-so4?file=src%2Fapp%2Fmy-mouse.service.ts
查看另一个答案,了解更多详细信息:Is it possible to use HostListener in a Service? 或者如何在 Angular 服务中使用 DOM 事件?
解决方案
您需要使用value
or从 BehaviorSubject 获取当前值,getValue()
并将其排序如下:this.dataSource.value.sort(this.matSort)
。
推荐阅读
- angular - 在 S3 存储桶中更新文件后,静态网站内容不会立即反映
- python - 抓取 window.location.href 链接
- javascript - 如何将多个表单中的数据输入 MySQL
- javascript - 如何从文件对话框中读取音频文件
- java - 将 TextInputLayout 或任何 UI 组件从 Activity 传递给 DialogFragment
- python - 考虑比例常数以在 Python 中使用 dsolve
- javascript - 使用需要 CSRF 令牌的遗留端点
- java - Android自动点击编程
- python-3.x - 如何从 datetime 模块中消除此错误并有效地运行代码
- jmeter - Jmeter 后处理器和控制器
我正在寻找使用角度材料创建动态表,我可以在其中动态添加/删除数据。作为 Angular 的新手,我参考了 stackblitz 来创建表格。
问题描述
我正在寻找使用角度材料创建动态表,我可以在其中动态添加/删除数据。作为 Angular 的新手,我参考了 stackblitz 来创建表格。
https://stackblitz.com/edit/angular-material-editable-table-fazhbc
虽然我的所有更改都有效 - 我无法对数据进行排序
ngAfterViewInit() {
this.dataSource.sort = this.matSort;
}
我得到 TS2339 的错误:类型上不存在属性“排序”'BehaviorSubject<AbstractControl[]
是不是像材料表数据源那样支持排序,还是我遗漏了什么?
您也可以使用rxjsfromEventPattern
中的函数。
private createOnClickObservable(renderer: Renderer2) {
let removeClickEventListener: () => void;
const createClickEventListener = (
handler: (e: Event) => boolean | void
) => {
removeClickEventListener = renderer.listen("document", "click", handler);
};
this.onClick$ = fromEventPattern<Event>(createClickEventListener, () =>
removeClickEventListener()
).pipe(takeUntil(this._destroy$));
}
只需按预期使用/订阅它
myMouseService.onClick$.subscribe((e: Event) => {
console.log("CLICK", e);
});
并且不用担心破坏,它会在关闭 observable 时由 rxjs 处理!
现场演示:https ://stackblitz.com/edit/angular-so4?file=src%2Fapp%2Fmy-mouse.service.ts
查看另一个答案,了解更多详细信息:Is it possible to use HostListener in a Service? 或者如何在 Angular 服务中使用 DOM 事件?
解决方案
您需要使用value
or从 BehaviorSubject 获取当前值,getValue()
并将其排序如下:this.dataSource.value.sort(this.matSort)
。
推荐阅读
- angular - 在 S3 存储桶中更新文件后,静态网站内容不会立即反映
- python - 抓取 window.location.href 链接
- javascript - 如何将多个表单中的数据输入 MySQL
- javascript - 如何从文件对话框中读取音频文件
- java - 将 TextInputLayout 或任何 UI 组件从 Activity 传递给 DialogFragment
- python - 考虑比例常数以在 Python 中使用 dsolve
- javascript - 使用需要 CSRF 令牌的遗留端点
- java - Android自动点击编程
- python-3.x - 如何从 datetime 模块中消除此错误并有效地运行代码
- jmeter - Jmeter 后处理器和控制器