web-dev-qa-db-ja.com

ionic 4?のapp.componentから現在のページを取得する方法

ionic 4.のapp.componentで現在のページインスタンスを取得しようとしています。

ionic 3私はこのようにすることができます

this.nav.getActive()。instance

9

私の場合、私はこの状況を解決するためにオブザーバブルを使用しました

これが私のURLサービスです

@Injectable({
  providedIn: 'root'
})
export class CurrentPageService {
  private $urlParts:BehaviorSubject<any>;
  private url;
  constructor(private router:Router) { 
    this.$urlParts = new BehaviorSubject(null);
  }
  get urlParts(){
    return this.$urlParts.asObservable();
  }
  setUrl(){
    this.url=this.router.url;
    let parts = this.url.split('/');
    return this.$urlParts.next(parts);
  }
}

私のアプリコンポーネントで現在アクティブな状態を取得することに興味があるすべてのページで、このオブザーバブルをトリガーします

export class HomePage {
  constructor(private currentPage:CurrentPageService) {

  }
ionViewDidEnter(){
  this.currentPage.setUrl();
}

そして最後に私のappcomponent

export class AppComponent {
urlParts;
constructor(private currentpage:CurrentPageService){
      this.currentPage.urlParts.subscribe(url=>this.urlParts=url);
    });
}
foo(){
        if (!this.urlParts.includes('home')) {
          //do something
        }
}

}
0
Ahmed Elkemary

私はこれを行い、それは私のために働きます:

ionViewWillEnter() {  
   console.log(this.router['routerState'].snapshot.url);
}
0
ayoub boumzebra

ルーターアウトレットを使用して現在のページを追跡できます

<router-outlet (activate)="componentName = $event"></router-outlet>

詳細については、ドキュメントを確認してください https://angular.io/api/router/RouterOutlet

0
has19