Angular 2-克隆BlogComponent的最佳方法:blogs[]到Navmenu组合框?
这种情况是,我想在NavMenuComponent和博客中选择一个组合框。这是关于快速导航体验 目前我有第二个数组博客:IBlogs[],这是一个糟糕的做法,但无论如何 我现在的问题是,当我添加/删除任何博客时,组合框都没有得到更新。这是因为我使用的是BlogComponent>blogs[],而不是NavMenuComponent>blogs[] 我必须努力使它工作!还有更好的办法吗?我可以强制从另一个组件更新阵列吗?[没有共享服务] 我可以让他们共享服务,但我不喜欢这个想法。因为在BlogComponent中,我必须使用sharedService.getBlogs而不是blogService.getBlogs 有什么想法吗?例如:Angular 2-克隆BlogComponent的最佳方法:blogs[]到Navmenu组合框?,angular,Angular,这种情况是,我想在NavMenuComponent和博客中选择一个组合框。这是关于快速导航体验 目前我有第二个数组博客:IBlogs[],这是一个糟糕的做法,但无论如何 我现在的问题是,当我添加/删除任何博客时,组合框都没有得到更新。这是因为我使用的是BlogComponent>blogs[],而不是NavMenuComponent>blogs[] 我必须努力使它工作!还有更好的办法吗?我可以强制从另一个组件更新阵列吗?[没有共享服务] 我可以让他们共享服务,但我不喜欢这个想法。因为在BlogC
export enum BlogAction{
CREATE,
DELETE
}
export Blog{
id: number;
name: string;
}
export class BlogActionModel{
action: BlogAction;
blog: Blog;
}
@Injectable()
export class BlogService{
private blogPoster: Subject<BlogActionModel> = new Subject<BlogActionModel>();
public $blogPosted: Observable<BlogActionModel> = this.blogPoster.asObservable();
create(blog: Blog): void{
this.blogResource.saveToBackend(blog); //do save routine
this.blogPoster.next({
action: BlogAction.CREATE,
blog: blog
});
}
//implement `update` and `delete` actions in same way
}
@Component({})
export class NavMenuComponent implements OnInit{
private blogs: Blog[] = [];
constructor(private blogService: BlogService){}
ngOnInit(): void{
this.blogService.$blogPosted.subscribe((blogAction: BlogActionModel) => {
if(blogAction.action === BlogAction.CREATE){
this.blogs.push(blogAction.blog);
}else if(blogAction.action === BlogAction.DELETE){
//do delete
}else{
//do update
}
});
}
}
就我个人而言,我更喜欢sharedBlogService,但不管怎样。。。在创建/删除博客的组件中,添加可观察对象并在发生更改时发出事件,然后在NavMenuComponent中侦听该事件。有链接吗?我是新来的