Не могу добавить NavController в мой app.component.ts - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь внедрить NavController в мой app.component.ts, но у меня постоянно появляется сообщение об ошибке:

NullInjectorError: No provider for NavController!

Я все делаю правильно, импортируя и декларируя это, как и с любым другим компонентом, который я добавляю. Но на моем главном компоненте приложения это, похоже, не нравится.

Что там происходит?

код:

import { AuthenticationProvider } from './../providers/authentication/authentication';
import {Component} from '@angular/core';
import { Events, Platform, NavController } from 'ionic-angular';
import {StatusBar} from '@ionic-native/status-bar';
import {SplashScreen} from '@ionic-native/splash-screen';
import {ScreenOrientation} from '@ionic-native/screen-orientation';




import {TabsPage} from '../pages/tabs/tabs';
import {LoginPage} from "../pages/login/login";

@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  rootPage: any = TabsPage;

  constructor(
    platform: Platform,
    statusBar: StatusBar,
    splashScreen: SplashScreen,
    events: Events,
    private navCtrl: NavController,
    private authProvider: AuthenticationProvider,
    screenOrientation: ScreenOrientation) {
    platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      statusBar.styleLightContent();
      splashScreen.hide();

      //device-specific code, such as detecting screen rotation
      if (platform.is('cordova')) {
        screenOrientation.lock(screenOrientation.ORIENTATIONS.PORTRAIT);
      }

      events.subscribe('user:expired_token', () => {
        this.rootPage = LoginPage;
      });
    });
  }

  logout(){
    this.authProvider.logout();
    this.navCtrl.setRoot('LoginPage');
  }
}

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете достичь своего NavController в app.component.ts по:

<ion-nav #nav>
...

@ViewChild('nav')
public nav: NavController;

Причина в том, что NavController еще не инициализируется, когда корневой компонент загружается, поэтому его нельзя внедрить. См. Комментарий в исходный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...