2017-12-22 11 views
0

ich bin eine Komponente in angular 5 Implementierung, die mein foo-Objekt erstellen und es funktioniert gut, aber danach will ich es bearbeiten, so dass ich zeige den Bearbeitungspfad zu derselben Komponente:Erstellen und Bearbeiten von Operationen in Winkel

const routes: Routes = [ 
    ... 
    { path: 'foo/new', component: NewFooComponent }, 
    { path: 'foo/edit/:id', component: NewFooComponent }, 
    ... 
]; 

meine Frage ist, wie man in meinem NewFooComponent.ts weiß, wenn ich im foo/new Weg oder in foo/edit/:id bin?

Und ist es auch der beste Ansatz?

+0

Können Sie nicht einfach testen, ob Sie eine ID haben oder nicht? –

+0

Sie könnten versuchen, ID mit der in [diese Antwort] vorgeschlagenen Methode zu erhalten (https://stackoverflow.com/a/40276279/1009922). – ConnorsFan

Antwort

5

Was würde ich tun Einstellung ist wie new oder edit als param und überprüfen params mit ActivatedRoute

Also werde ich die Routen wie folgt aufgebaut:

const routes: Routes = [ 
    ... 
    { path: 'foo/:state', component: NewFooComponent }, 
    { path: 'foo/:state/:id', component: NewFooComponent }, 
    ... 
]; 

und überprüfen, indem

tun
constructor(public activatedRoute: ActivatedRoute) { } 

ngOnInit() { 
    this.activatedRoute.params.subscribe(
     params => { 
     if(params['state'] === 'new') { ... } 
     else {...} 
     } 
    ); 
} 
+0

danke für die Lösung, aber es wird einfach sein, nur die ID zu überprüfen, wenn null ist, meinst du nicht? – Youssef

+0

Sicher, wenn die ID nur im Bearbeitungsmodus verfügbar ist, dann ja, es ist einfacher. Ich habe nur angenommen, dass es nicht war. – YounesM

1

Verwenden Sie die ActivatedRoute, um die Router-Parameter durch die ID id zu erhalten Eigenschaft besteht in dem Pfad

constructor(private route:ActivatedRoute){} 

ngOnInit(){ 
    // 'id' is the name of the route parameter 
    if (this.route.snapshot.params['id']) { .... }; 
    else { ... } 
} 
0

Ich denke, dass eine schlechte Design-Entscheidung ist, Ihre NewFooComponent jetzt die Erstellung und die Bearbeitung von etwas tut, und dass die SRP verletzen, vielleicht sollten Sie eine dedicate Komponente für das Erstellen Bearbeiten und teilen Sie die Vorlage, wenn dies die Duplizierung ist, die Sie vermeiden möchten, indem Sie nur eine Komponente erstellen.

Verwandte Themen