Angular 如何在另一个组件中调用一个组件的函数
我有两个组件navbar和login,我想在登录组件中调用navbar中的一个函数,到目前为止我尝试了这个,但没有成功。。。。。。 我的导航栏Angular 如何在另一个组件中调用一个组件的函数,angular,typescript,Angular,Typescript,我有两个组件navbar和login,我想在登录组件中调用navbar中的一个函数,到目前为止我尝试了这个,但没有成功。。。。。。 我的导航栏 import {Component, OnInit} from '@angular/core'; @Component({ selector: 'header-Navbar', templateUrl: './app/navbar/navbar.html', }) export class Navbar implements OnIni
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'header-Navbar',
templateUrl: './app/navbar/navbar.html',
})
export class Navbar implements OnInit {
constructor(public router: Router) {
}
get(){
if (this.user == null) {
this.showstartupbuttons = true;
this.showsicons = false;
}
else {
this.username = this.user.username;
this.showsicons = true;
this.showstartupbuttons = false;
}
}
我的login.ts
import {Component, OnInit} from '@angular/core';
@Component({
templateUrl: './app/login/login.html',
providers:[Navbar]
})
export class Login implements onInit{
ckeditorContent:any;
constructor(public navbar:Navbar) {}
ngOnInit(){
this.navbar.get();
}
我使用了提供者,但我不确定这些过程。有人能提供帮助吗。您可以使用服务进行这样的组件交互
import { Subject } from 'rxjs/Subject';
import { Injectable } from '@angular/core';
@Injectable()
export class NavbarService{
private getSource = new Subject<any>();
get$ = this.getSource.asObservable();
triggerNavbarGet(){
this.getSource.next(null);
}
}
您可以在登录组件上触发此函数,如
constructor(public navbar:Navbar, private navbarService: NavbarService) {}
ngOnInit(){
this.navbarService.triggerNavbarGet();
}
关于组件交互的更多信息。但我不能将@injectable()保留到我的navbar组件中,因为它是一个组件。您只需要将
@injectable()
添加到服务中。不要将其添加到组件中。您还可以删除登录组件上的提供者:[Navbar]
。我的解决方案不需要它。实际上,我的导航栏是一个组件,要在我的登录中使用它。我必须将@Injectable添加到它,但它是一个组件……还有其他方法吗?我知道你的导航栏是一个组件。你应该为它创建一个服务。在我的回答中,我为您创建了一个名为NavbarService的服务。请阅读我答案末尾的文档。请参阅我的问题-它的调用属性,但您可以用相同的方式调用函数。不幸的是,我陷入了一个没有解决的问题。也许你知道
constructor(public navbar:Navbar, private navbarService: NavbarService) {}
ngOnInit(){
this.navbarService.triggerNavbarGet();
}