我需要帮助才能使这个“查看详细信息功能”工作。首先,我有用户组件,我想模仿它的工作原理。就像您在尝试获取特定事物时必须访问其服务一样。但是用户组件不是来自 api。现在,我想在我的新闻组件中模仿它,详细信息来自 api。我如何访问新闻组件的特定事物详细信息?我已经把下面的代码放在用户组件和新闻组件上。谢谢你的帮助。
用户服务.ts
import { User } from './user.model';
import { Subject } from 'rxjs/Subject';
export class UserService {
usersChanged = new Subject<User[]>();
private users: User[]= [
new User('Harry', 'James', 99999889),
new User('Thomas', 'Baker', 99638798)
];
getUsers() {
return this.users.slice();
}
getUser(index: number) {
return this.users[index];
}
用户列表组件
import { Component, OnInit } from '@angular/core';
import { User } from '../user.model';
import { UserService } from '../user.service';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-user-list',
templateUrl: './user-list.component.html',
styleUrls: ['./user-list.component.css']
})
export class UserListComponent implements OnInit {
users: User[];
index: number;
constructor(private userService: UserService, private router: Router, private route: ActivatedRoute) { }
ngOnInit() {
this.users = this.userService.getUsers();
this.userService.usersChanged
.subscribe(
(users: User[]) => {
this.users = users;
}
);
}
onViewUserDetail(index: number){
this.router.navigate(['users', index]);
}
新闻服务.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders} from '@angular/common/http';
import 'rxjs/add/operator/map';
@Injectable()
export class NewsService {
constructor(private httpClient: HttpClient) {
}
getNews() {
const authToken = localStorage.getItem('auth_token');
const headers = new HttpHeaders()
.set('Content-Type', 'application/json')
.set('Authorization', `Bearer ${authToken}`);
return this.httpClient
.get('sample/news', { headers: headers })
.map(
(response => response));
}
getNewsDetail(index: number) {
//
}
新闻列表.component.ts
import { Component, OnInit } from '@angular/core';
import { NewsService } from '../news.service';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-news-list',
templateUrl: './news-list.component.html',
styleUrls: ['./news-list.component.css']
})
export class NewsListComponent implements OnInit {
newslists: any;
constructor(private newsService: NewsService, private router: Router, private route: ActivatedRoute) { }
ngOnInit() {
this.newsService.getNews()
.subscribe(
(data:any) => {
console.log(data);
this.newslists = data.data.data;
console.log(this.newslists);
},
error => {
alert("ERROR");
});
}
onViewNewsDetail(id: number){
console.log(id);
this.router.navigate(['news', id]);
}
}