Wie bekommt man Daten von der Route oder ActivatedRoute bei der Anmeldung an den router.Veranstaltungen.subscribe in Angular2?

Ich versuche, die Daten von einem Router, wenn sich die Route ändert, aber ich bin nicht mit Erfolg. Hier habe ich den asdf Eigenschaft

@NgModule({
  bootstrap: [AppComponent],
  declarations: [
    AppComponent,
    LoginComponent,
    DashboardComponent,
    OverviewComponent,
  ],
  imports: [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot([
      { path: '', pathMatch: 'full', redirectTo: '' },
      { component: LoginComponent, path: 'login' },
      {
        children: [
          { path: '', pathMatch: 'full', redirectTo: 'overview', data: { asdf: 'hello' } },
          { component: OverviewComponent, path: 'overview', data: { asdf: 'hello' } },
        ], component: DashboardComponent,
        path: '',
      },
    ]),
  ],
})
export class AppModule { }

Und hier bekomme ich die URL vom router, wenn sich die route ändert, aber asdf ist nicht definiert 🙁

import { Component, OnDestroy, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { ActivatedRoute, NavigationEnd } from '@angular/router';
@Component({
  selector: 'cs-map',
  styleUrls: ['map.component.css'],
  templateUrl: 'map.component.html',
})
export class MapComponent implements OnInit {
  private routerSub;

  constructor(private router: Router, private activatedRoute: ActivatedRoute) { }

  public ngOnInit() {
    this.router.events.subscribe((val) => {
      if (val instanceof NavigationEnd) {
        let url = val.url;
        console.log(this.activatedRoute.snapshot.data['asdf']); //data is defined but asdf is not :(
      }
    });
  }
}

Wie bekomme ich asdf's Wert?

Edit: ich bin mit der Navigation zu /overview

  • Ich denke, das ist ein bekanntes Problem. Können Sie versuchen, mit setTimeout(() => console.log(this.activatedRoute.snapshot.data['asdf']))?
  • leider hat es nicht funktioniert
  • Es gab eine ähnliche Frage heute, wo jemand schlug die Verwendung Observable.zip() mit this.activatedRoute.snapshot.data und this.router.events.
  • Meinst du diese?: github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/...
  • Genau . . . . . . .
  • Muss ich ersetzen Sie den router.Veranstaltungen.abonnieren mit Observable.zip? Ich bin mir nicht genau sicher, wie Sie Sie von hier aus gehen
  • Ich weiß es nicht. Ich habe gerade gesehen es erwähnt, auf eine ähnliche Frage. Ich bin nicht mit TS mich und keine tiefen Kenntnisse über observablen.
  • Np, danke tho 🙂

InformationsquelleAutor ilovelamp | 2016-11-17
Schreibe einen Kommentar