【发布时间】:2021-04-14 23:55:39
【问题描述】:
当我每秒调用一个请求时,我会收到此错误:
core.js:5967 ERROR TypeError: Cannot read property 'remove' of null
在 LoadingBackdropService.hide (loading-backdrop.service.ts:18)
在 TapSubscriber._tapNext (payment.component.ts:57)
在 TapSubscriber._next (tap.js:40)
在 TapSubscriber.next (Subscriber.js:49)
在 SwitchMapSubscriber.notifyNext (switchMap.js:70)
在 InnerSubscriber._next (InnerSubscriber.js:11)
在 InnerSubscriber.next (Subscriber.js:49)
在 MapSubscriber._next (map.js:35)
在 MapSubscriber.next (Subscriber.js:49)
在 FilterSubscriber._next (filter.js:33)
如何纠正错误?
ts:
ngUnsubscribe: Subscription;
ngOnInit() {
this.load();
}
load() {
this.loadingBackdrop.show();
this.ngUnsubscribe = timer(0, 1000).pipe(
switchMap(() => this._object.get(this.card.card_id)
.pipe(finalize(() => this.loadingBackdrop.hide())))
).subscribe(data => this.dataSource = new MatTableDataSource(data));
}
ngOnDestroy() {
if (this.ngUnsubscribe !== undefined) {
this.ngUnsubscribe.unsubscribe();
}
}
加载背景.service.ts:
show() {
const backdropWrapperElement = this.createLoadingBackdropTemplate();
const bodyElement = document.querySelector('body');
bodyElement.appendChild(backdropWrapperElement);
}
hide() {
const backdropWrapperElement = document.querySelector('#loadingBackdrop');
backdropWrapperElement.remove();
}
private createLoadingBackdropTemplate(): HTMLDivElement {
const element = document.createElement('div');
element.setAttribute('id', 'loadingBackdrop');
element.setAttribute('style', `
width: 100vw;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
z-index: 999;
`);
element.innerHTML = `
<div class="backdrop"></div>
<div class="spinner">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
`;
return element;
}
【问题讨论】:
-
您能否提供更多代码或可能的 stackblitz 可行演示? ?我认为问题可能出在
loadingBackdrop,但没有办法检查出来 -
问题是该元素没有
loadingBackdropID,不是吗?你也可以分享createLoadingBackdropTemplate()函数吗? -
请提供
createLoadingBackdropTemplate()(或者更确切地说是创建的相应dom元素)。document.querySelector没有找到您想要的(可能缺少达里奥提到的 id)。 -
当你在浏览器中检查dom时,元素是否真的存在?
-
Gunnar 说得对,我认为 100% 的问题只是
document.querySelector返回null你需要确保元素存在并且它被赋予了正确的 id
标签: angular typescript