Закрытие Popover Window из другого класса (Ioni c, Typescript) - PullRequest
0 голосов
/ 04 марта 2020

Моя проблема в том, что функция, которую я импортирую из другого класса, не будет вызываться и не распознается синтаксическим анализатором. Поповер не может быть закрыт. Я попробовал несколько похожих решений, но ни одно из них не помогло мне. Я не настолько увлечен машинописью, поэтому надеюсь, что не ошибусь

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'])
  }
}

1 Ответ

0 голосов
/ 04 марта 2020

Я предполагаю, что 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);
    }
}
...