Ich habe eine Root-Komponente, die eine Änderung boolean hat und ich möchte abonnieren, dass sich ändernde boolean, mit einer Komponente innerhalb meiner <router-outlet>
. Ich verstehe, dass ich einen geteilten bidirektionalen Dienst irgendeiner Art verwenden muss. Die Dokumente für Shared Services sind jedoch für mich nicht sehr sinnvoll. (Ich denke, ich kann meinen Kopf nicht um das Astronautebeispiel wickeln) here, jede Hilfe würde sehr geschätzt werden, hier ist ein bisschen Code, um zu zeigen, was ich versuche zu tun.Komponenten Kommunikation über <Router-Ausgang>
Wurzelkomponente
@Component({
selector: 'my-app',
template: `<nav [state]="boolshow" (show)="changeValue($event)" ></nav>
<article><router-outlet></router-outlet></article> <-----component in router here
<footer></footer>
<h3>toggle state: {{boolshow}}</h3>`,
styleUrls: ['./Css/app.css'],
})
export class AppComponent {
boolshow: boolean; <-----boolean that needs to be read
}
Wenn Ihr Anwendungsstatusbaum nicht in Ihren Komponentenbaum passt, kann http://redux.js.org/ helfen. Nur ein Vorschlag – mfrachet
Sie können AppComponent Instanz in Route Komponente injizieren und seine Eigenschaft verwenden. Aber es ist eine lausige Übung. Und Sie können 'boolshow' nicht durch Eingaben an route-Komponente übergeben. Das liegt daran, dass der gemeinsame Dienst empfohlen wird. – estus