我的问题是,我从另一个类导入的一个函数将不会被调用,而且解析器也不会识别该函数。 Popover无法关闭。我尝试了几种类似的解决方案,但没有一个对我有用。我不太喜欢打字稿,所以我希望我没做错
export function dismissWindow() {}
@Component({
selector: 'app-user',
templateUrl: './user.page.html',
styleUrls: ['./user.page.scss'],
})
export class UserPage implements OnInit {
public popover;
//Pop up Informationen rechts oben
async notifications(ev: any) {
this.popover = await this.popoverCtrl.create({
component: NotificationsComponent,
event: ev,
animated: true,
showBackdrop: true
});
return await this.popover.present();
}
ngOnInit() {
}
public dismissWindow(){
console.log("Dismiss got called");
this.popover.dismiss();
}
}
import { UserPage } from './../user/user.page';
import { dismissWindow} from './../user/user.page';
LogOut() {
console.log("in logout method")
dismissWindow();
console.log("Call From Logout");
this.router.navigate(['login'])
}
}
答案 0 :(得分:0)
我假设popoverCtrl
是服务实例,如果是,则在第二个文件中注入服务并创建另一个服务来跟踪打开的弹出窗口或使用现有服务。
基本上在中心位置跟踪打开的弹出窗口,例如单例服务,可以将其注入任何组件中并进行访问。
import {Injectable} from '@angular/core';
@Injectable({
providedIn: 'root',
})
class UtilService {
private _popover;
set openedPopover(popover) {
this._popover = popover;
}
closePopover() {
if(this._popover) {
this._popover.dismiss();
this._popover = null;
}
}
}
@Component({
selector: 'app-user',
templateUrl: './user.page.html',
styleUrls: ['./user.page.scss'],
})
export class UserPage implements OnInit {
public popover;
constructor(private utilService: UtilService) {}
//Pop up Informationen rechts oben
async notifications(ev: any) {
this.popover = await this.popoverCtrl.create({
component: NotificationsComponent,
event: ev,
animated: true,
showBackdrop: true
});
this.utilSerivce.openedPopover(this.popover);
return await this.popover.present();
}
ngOnInit() {
}
public dismissWindow(){
console.log("Dismiss got called");
//this.popover.dismiss();
this.utilService.closePopover(this.popover);
}
}
class YourClass {
constructor(private utilService: UtilService) {}
LogOut() {
this.utilService.closePopover(this.popover);
}
}