在 RC4 上完成绑定时,Angular2 AfterViewChecked 不会触发指令
Angular2 AfterViewChecked not firing on a directive when binding is complete on RC4
我有一个 Angular 2 指令,当 table 被放置在可滚动的 div。它根据单元格上数据的大小和 vice-versa 调整列的大小 headers。它在 Angular 2 RC1 之前工作正常,但是在我将它升级到 RC4 之后它停止工作了。
一段时间后,我意识到框架触发的 "AfterViewChecked" 事件数量已经减少,这可能是由于某个问题已得到修复。现在的问题是我的指令不再触发其重新计算逻辑来调整 table headers.
是否可以从 parent 的指令 table 绑定或捕获事件以触发重新计算过程?
指令代码大致是这样的:
export class TableFixedHeaderDirective implements AfterViewChecked, AfterViewInit
...
ngAfterViewInit(): void ...
ngAfterViewChecked(): void ...
onWindowResize(): void ...
...
在这些事件中,我调用逻辑来执行 header 计算,这将基本上调整 header 或列的大小,具体取决于所显示数据的宽度。
angular 指令没有视图,因此所有与视图相关的生命周期挂钩都将不起作用,因为它们不存在。
见docs
指令和组件
ngOnInit
在 Angular 初始化数据绑定输入属性后初始化 directive/component。
ngOnChanges
在 Angular 设置数据绑定输入 属性 后响应。该方法接收当前值和先前值的更改对象。
ngDoCheck
检测并根据 Angular 可以或不会自行检测的更改采取行动。调用每个变化检测 运行.
ngOnDestroy
在 Angular 销毁 directive/component 之前清理。取消订阅可观察对象并分离事件处理程序以避免内存泄漏。
仅组件
ngAfterContentInit
Angular 将外部内容投影到其视图后。
ngAfterContentChecked
在 Angular 检查它投射到其视图中的外部内容的绑定之后。
ngAfterViewInit
Angular 创建组件视图后。
ngAfterViewChecked
Angular 检查组件视图的绑定后。
我有一个 Angular 2 指令,当 table 被放置在可滚动的 div。它根据单元格上数据的大小和 vice-versa 调整列的大小 headers。它在 Angular 2 RC1 之前工作正常,但是在我将它升级到 RC4 之后它停止工作了。
一段时间后,我意识到框架触发的 "AfterViewChecked" 事件数量已经减少,这可能是由于某个问题已得到修复。现在的问题是我的指令不再触发其重新计算逻辑来调整 table headers.
是否可以从 parent 的指令 table 绑定或捕获事件以触发重新计算过程?
指令代码大致是这样的:
export class TableFixedHeaderDirective implements AfterViewChecked, AfterViewInit
...
ngAfterViewInit(): void ...
ngAfterViewChecked(): void ...
onWindowResize(): void ...
...
在这些事件中,我调用逻辑来执行 header 计算,这将基本上调整 header 或列的大小,具体取决于所显示数据的宽度。
angular 指令没有视图,因此所有与视图相关的生命周期挂钩都将不起作用,因为它们不存在。
见docs
指令和组件
ngOnInit
在 Angular 初始化数据绑定输入属性后初始化 directive/component。
ngOnChanges 在 Angular 设置数据绑定输入 属性 后响应。该方法接收当前值和先前值的更改对象。
ngDoCheck
检测并根据 Angular 可以或不会自行检测的更改采取行动。调用每个变化检测 运行.
ngOnDestroy 在 Angular 销毁 directive/component 之前清理。取消订阅可观察对象并分离事件处理程序以避免内存泄漏。
仅组件
ngAfterContentInit
Angular 将外部内容投影到其视图后。
ngAfterContentChecked
在 Angular 检查它投射到其视图中的外部内容的绑定之后。
ngAfterViewInit Angular 创建组件视图后。
ngAfterViewChecked
Angular 检查组件视图的绑定后。