Rxjs-DOM 加载函数不触发 angular 2
Rxjs-DOM load function does not fire angular 2
我目前正在开发一个 Angular 2 项目,我只需要在页面上的所有元素都加载后调用特定函数。我尝试使用 Observable 中的 eventFrom 函数,它在我期待 'click' 操作时起作用,但是一旦我切换到“加载”,它就根本没有触发。接下来我尝试使用 Rxjs-DOM加载函数,它也不会触发。
这是我现在拥有的代码:
ngAfterViewInit(): void {
let input = this.container.nativeElement.getElementsByClassName('list-item');
let source = Rx.DOM.load(input);
let subscription = source.subscribe((x) => {
console.log('Next!');
},
(err) => {
console.log('Error: ' + err);
},
() => {
let temp = this.container.nativeElement.getElementsByClassName('list-item');
console.log(temp.length);
});
}
<div class="list-wrapper">
<div class="list">
<div class="list-item" *ngFor="let item of items">
<img src={{item.image}} alt="{{item.title}}">
</div>
</div>
</div>
"@angular/core": "4.0.1",
"@types/rx-dom": "^7.0.0",
"angular2-infinite-scroll": "0.3.4",
"gulp-run": "1.7.1",
"rxjs": "5.2.1-smooth"
temp.length
始终为 0。
如果我在那里设置 timeout
它会完美地工作,因为所有元素都需要 2-3 秒来加载,然后 temp
不为空。但在这种情况下超时是不可取的。
我做错了什么吗?
另一个问题是 Angular 2 中是否有任何其他方式仅在实际加载所有 dom 元素后调用函数。
提前致谢。
尝试ngZone.run
。它会让 angular 重新渲染最新模型。
我目前正在开发一个 Angular 2 项目,我只需要在页面上的所有元素都加载后调用特定函数。我尝试使用 Observable 中的 eventFrom 函数,它在我期待 'click' 操作时起作用,但是一旦我切换到“加载”,它就根本没有触发。接下来我尝试使用 Rxjs-DOM加载函数,它也不会触发。
这是我现在拥有的代码:
ngAfterViewInit(): void {
let input = this.container.nativeElement.getElementsByClassName('list-item');
let source = Rx.DOM.load(input);
let subscription = source.subscribe((x) => {
console.log('Next!');
},
(err) => {
console.log('Error: ' + err);
},
() => {
let temp = this.container.nativeElement.getElementsByClassName('list-item');
console.log(temp.length);
});
}
<div class="list-wrapper">
<div class="list">
<div class="list-item" *ngFor="let item of items">
<img src={{item.image}} alt="{{item.title}}">
</div>
</div>
</div>
"@angular/core": "4.0.1",
"@types/rx-dom": "^7.0.0",
"angular2-infinite-scroll": "0.3.4",
"gulp-run": "1.7.1",
"rxjs": "5.2.1-smooth"
temp.length
始终为 0。
如果我在那里设置 timeout
它会完美地工作,因为所有元素都需要 2-3 秒来加载,然后 temp
不为空。但在这种情况下超时是不可取的。
我做错了什么吗?
另一个问题是 Angular 2 中是否有任何其他方式仅在实际加载所有 dom 元素后调用函数。
提前致谢。
尝试ngZone.run
。它会让 angular 重新渲染最新模型。