2016-06-09 8 views
2

Nachladen Wie routeparams in routerConfig passieren, ohne die SeiteAngular 2 - Wie routeparams in routerConfig passieren, ohne die Seite

Nachladen

Ich habe eine Komponente, die routerparams in dem Router ist vorbei als

@Component({ 
    selector: 'apartment', 
    template: ` 
    <div *ngFor="#apartment of apartments" class="demo-updates mdl-card mdl-shadow--2dp mdl-cell mdl-cell--4-col mdl-cell--4-col-tablet mdl-cell--12-col-desktop"> 
       <div class="mdl-card__actions mdl-card--border">     
       <a [routerLink]="['AptDetails', {UnitType: apartment.UnitType, aptStatus: 'Available'}]" class="mdl-button mdl-js-button mdl-js-ripple-effect" (click)="getAvailable(apartment)">Available</a>        
       </div> 
    </div> 

folge In der empfangenden Komponente werden die Parameter wie folgt gelesen:

@Component({ 
    selector: 'aptdetails', 
    template: ` <h1> Apt Details</h1> 
       {{aptDetails | json}} 
    `, 
    directives: [ROUTER_DIRECTIVES] 
}) 

export class AptDetailsComponent implements OnInit { 

    constructor(private apartmentService: ApartmentService, private sharedService: SharedService, params: RouteParams) { 
    this.apartmentService = apartmentService; 
    this.aptStatus = params.get('aptStatus'); 
    this.UnitType = params.get('UnitType');  
    } 

Die Werte werden erfolgreich übergeben, die Seite wird jedoch aktualisiert.

Wie kann ich die Parameter übergeben, ohne die Seite in routerLink zu aktualisieren?

Ich weiß, dass wir einen gemeinsamen Dienst für die temporäre Speicherung der Werte zwischen den Komponenten erstellen können, Wie kann ich routerparams für das gleiche verwenden? mit nur Parameter der aktuellen Route navigiert verändert die bestehende Komponenteninstanz nicht wiederverwenden

class MyComponent implements CanReuse { 
    routerCanReuse(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction) { 
    return true; 
    } 
} 

dann

Antwort

1

können Sie CanReuse implementieren.

+0

Kann ich Route in ComponentInstruction wie diese direkt passieren? 'routerCanReuse (nextInstruction: 'AptDetails', prevInstruction: 'Apartment')' – user2180794

+0

Nein, der Router ruft diese Methode auf, wenn er zu dieser Komponente navigiert. Du solltest es nicht selbst nennen. Sie können einen 'routerLink' oder' router.navigateXxx (...) 'Anruf verwenden und der Rest wird vom Router erledigt. –

+0

Die Seite wird immer noch neu geladen, wenn es zu AptDetails geht ... vielleicht mache ich etwas falsch. Ich habe 'CanReuse' in die ApartmentComponent hinzugefügt, die zu AptDetails führt – user2180794

0

Verwendung CanReuse und OnReuse, als

export class Component implements OnReuse, CanReuse { 

    routerCanReuse() { 
     if (yourCondition) 
      return true; 
     else 
      return false; 
    } 

    routerOnReuse() { 
     console.log('on reuse'); 
    } 


} 
Verwandte Themen