Senaryo: Bir başlık bileşenim var ve bir giriş sayfası bileşenim var. Oturum açıp açmadığınıza bağlı olarak, başlığı güncelleştirmek için oturum açma sayfası bileşenindeki başlık bileşeninden bir işlev aramak istiyorum.Angularjs2 Bir bileşenden diğerine işlev çağırmak nasıl?
Soru: Birisi bunu yapmayı nasıl yapacağımı açıklayabilir mi? @ViewChild'i hiçbir şekilde kullanmadan denedim. Dahası, eğer bu yanlış yoldan gidersem belki de beni daha iyi bir şekilde aydınlatabilirsin?
Şerefe!
import ...
@Component({
selector: 'header',
templateUrl: '/views/header.html',
directives: [ROUTER_DIRECTIVES],
})
export class Header {
constructor() {
}
public updateRight() {
alert("nope");
}
}
import ...
@Component({
selector: 'login',
templateUrl: '/views/login.html',
providers: [HTTP_PROVIDERS],
})
export class Login {
@ViewChild(Header) header: Header;
constructor(http: Http) {
}
onSubmit() {
// call function to update header stuffs
this.header.updateRight();
}
}
main.ts şablon
<header></header>
<router-outlet></router-outlet>
header.ts şablon
<div id="header-wrap">
<div class="container">
<div class="row">
<div class="col-md-3">
<h3><strong><a [routerLink]="['/Home']">HomePage</a></strong></h3>
</div>
<div class="col-md-6">
</div>
<div class="col-md-3" style="text-align: right;">
<a [routerLink]="['/Login']">Log In</a>
<a [routerLink]="['/Register']">Sign Up</a>
</div>
</div>
</div>
</div>
login.ts şablon
Aslında<div class="container padme">
login
</div>
daha kodu girin. Giriş ve Başlık nedir? –
Bu, "HeaderComponent" ve "LoginComponent" öğelerine enjekte ettiğiniz "LoginService" adlı bir hizmeti kullanmak ve bu – PierreDuc
aracılığıyla iletişim kurmak için çok uygun bir yer gibi görünüyor. Bu, bileşenlerin nasıl ilişkili olduğunu göstermiyor. Şablonları ekleyebilir misiniz lütfen? –