2017-06-09 4 views
-1

Ich muss Daten an meinen Router weiterleiten, um ihn in der Zielkomponente zu verwenden. Ich habe NavigationExtrasQueryParam verwendet, aber es zeigt Parameter in der URL an. Gibt es eine andere Möglichkeit, Daten weiterzugeben?Weiterleiten von Daten an Router Angular 2

let navigationExtras: NavigationExtras = { 
      queryParams: { 
       "param1": true, 
      } 
     }; 
     this.router.navigate(['/page1/view'],navigationExtras); 
+0

Wollen Sie Abfragezeichen wie param = true oder/ –

+0

weder, ich brauche Daten zu übergeben, ohne sie in der URL zeigt –

+0

können Sie es als @ Eingang übergeben? .. ist es ein Compononet Kind? –

Antwort

0

Hallo Versuchen Sie, mit so etwas wie dieses:

1 - Deklarieren Sie einen Dienst wie:

import { Observable } from 'rxjs/Observable'; 
import { Injectable } from '@angular/core'; 
import { Subject } from 'rxjs/Subject'; 


@Injectable() 
export class SharedService { 

    // Observable sources (change activity) 
    private emitChangeActivitySource = new Subject<any>(); 
    // Observable streams (change activity) 
    changeActivityEmitted$ = this.emitChangeActivitySource.asObservable(); 
    // Service (change activity) 
    emitChangeActivity(change: any) { 
     this.emitChangeActivitySource.next(change); 
    } 

} 

2- dann, wenn Sie erhalten möchten (subscribe) dafür:

import { SharedService } from '../shared/services/index'; 

@Component({ 
    selector: 'app-dashboard', 
    templateUrl: './full-layout.component.html', 
    styleUrls: ['./full-layout.component.scss'] 
}) 
export class FullLayoutComponent { 


    constructor(private toasterService: ToasterService, 
     private currentUserService: CurrentUserService, 
     private menuService: MenuService, 
     private router: Router, 
     private auth: AuthService, 
     private _sharedService: SharedService, 
     private _activitiesService: ActivitiesService, 
     private _router: Router) { 


    _sharedService.changeActivityEmitted$.subscribe(
      activity => { 
       this.data = activity; 

       } 
      }); 

      } 

      } 

3- wo Sie es auslösen möchten:

this._sharedService.emitChangeActivitySource({name:'',descr:''}); 
+0

im dritten Schritt ich denke, du meinst 'this._sharedService.emitChangeActivity ({name: '', descr: ''});', ich änderte es und ich testete, ich bekomme diesen Fehler kann nicht 'outlet' von null –

+0

bekommen mmm outlet ist für routing ... –

+0

ich denke, dass es keine beziehung zwischen den beiden komponenten gibt, um das ereignis auszustrahlen .. kannst du mir bitte erklären was du genau in ur code machst? –

0

Bevor Sie zur nächsten Seite navigieren, setzen Sie den Parameter mit der Methode set. navigieren Sie zu Ihrem nächsten Seite

myFunction1(){ 
    this.uploadData = param; 
    this.router.navigate(['/page1/view']) 
} 

set uploadData (param) { 
     this._param = param; 
} 

, wenn Sie auf der nächsten Seite sind, rufen Sie den Parameter get-Methode

myFunction2(){ 
     parameter = this.uploadData; 
} 

get uploadData() { 
      return this._param; 
} 

Bitte beachten Sie verwenden. Dies ist nur ein Sudo-Code. Sie müssen es gemäß Ihrer Anforderung implementieren.

Sie können weitere Informationen über Getter und Setter aus folgenden Links

set method

get method