Ich habe 2 Komponenten - Navigation (die Themen Liste zeigt) und Video-Liste (die zeigt die ausgewählte).Änderung Erkennung zwischen 2 Winkelkomponenten
Alles, was ich tun möchte, ist, dass wenn ich auf ein Navigationselement klicke, der Titel der Videoliste geändert wird.
navigation.component.ts
import { Component, OnInit } from '@angular/core';
import {DataService} from "../../../services/data.service";
@Component({
selector: 'app-navigation',
templateUrl: './navigation.component.html',
styleUrls: ['./navigation.component.css'],
providers: [DataService]
})
export class NavigationComponent implements OnInit {
allTopics: any;
mainTopics: any;
constructor(private data: DataService) {
this.allTopics = this.data.getAllTopics().subscribe(data => {
this.allTopics = data;
this.mainTopics = Object.keys(data);
});
}
setCurrentSelectedSubTopic(subTopic) {
this.data.setCurrentSelectedSubTopic(subTopic)
}
ngOnInit() {
}
}
auf dieser Komponente habe ich eine Aktion Klick:
(click)="setCurrentSelectedSubTopic(subTopic)"
wenn i, klicken Sie ich ein gutes console.log bekommen. Diese Funktion aktualisiert einen Dienst.
data.service.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Http, Response } from '@angular/http';
@Injectable()
export class DataService {
currentSelectedSubTopic: any;
constructor(private http: Http) {}
getAllTopics(): Observable<any> {
return this.http.get(`http://localhost:4200/getAllTopics`)
.map(res => res.json())
}
setCurrentSelectedSubTopic(subTopic) {
this.currentSelectedSubTopic = subTopic;
}
}
dieser Service zur Video-list.component.ts injiziert wird
import { Component, OnInit } from '@angular/core';
import { DataService } from '../../../services/data.service';
@Component({
selector: 'app-video-list',
templateUrl: './video-list.component.html',
styleUrls: ['./video-list.component.css'],
providers: [DataService]
})
export class VideoListComponent implements OnInit {
constructor(public data: DataService) {
}
ngOnInit() {
}
}
und es ist html:
<p>
{{data.currentSelectedSubTopic ? data.currentSelectedSubTopic.Name : ''}}
</p>
egal was Ich habe versucht zu tun, diese HTML ändert sich nicht
also entferne ich Provider Eigenschaft von den Komponenten und stellen Sie sicher, dass es in meiner app.moudule.ts und immer noch nichts auf meinem Klick ändern –
danke! es funktioniert jetzt. habe das Problem gefunden! –