2017-11-27 3 views
1

Ich habe diese Methode:Wie verwende ich routerLink?

validateinformations() { 
    this.valid = this.r ? this.r.filter((required: string) => !this[required] || !Object.keys(this[required]).length) : []; 
    !this.valid.length || this.message.warning("Evidencija mora da sadrži (" + this.valid.join(", ").toUpperCase() + ") korisnika!"); 
    } 

In meinem html i dieses:

 <a (click)="validateinformations()" *ngIf="!children?.eligibilityInfo?.disabled" class="choose_offer {{!children.processId || !children.processId[0] ? 'disabled' : ''}}" [routerLink]="valid.length==0 ? ['/evidencija/',type, children.key, query.SPECIFICATION_ID, 0] : []" routerLinkActive="active" [queryParams]="valid?.length==0 ? {processId:children.processId && children.processId[0] ? children.processId[0] : children.processId ? children.processId : null,} : {}" queryParamsHandling="merge" >ODABERI</a> 

I Problem haben, weil für gültig bekomme ich immer Länge 0, so ist die Bedingung wahr und leitet es mich auf eine andere Seite . Irgendein Vorschlag wie kann ich das beheben? Weil es mich umleitet, bevor validineinformations ausgeführt werden.

Antwort

2

der beste Weg ist, auf Ihre Funktion umleiten:

import { Router } from '@angular/router'; 

constructor(_router:Router){} 

validateinformations() { 
    this.valid = this.r ? this.r.filter((required: string) => !this[required] || !Object.keys(this[required]).length) : []; 
    !this.valid.length || this.message.warning("Evidencija mora da sadrži (" + this.valid.join(", ").toUpperCase() + ") korisnika!"); 

     if(this.valid.length==0) 
      this._router.navigate(['/evidencija/',type, children.key, query.SPECIFICATION_ID, 0]); 
    }