angular - 发射器功能没有得到处理
问题描述
我对角度 2,4 代码很陌生。
我正在尝试使用 @Input 和 @Output 传递信息,但我陷入了困境。我正在将布尔变量从 true 更改为 false。调用了 emmit 方法,但从不调用父组件中处理的方法 (displayCounter)。
如果我使用类似的东西:
template: `<app-welcome (valueChange)='displayCounter($event)'></app-welcome>`
displayCounter 实际上被调用了,但是如果我在 div 中放置 'displayCounter($event)' 为什么不调用它呢?
父组件:
TS
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
title = 'app';
error: any;
@Input() public autorized: boolean;
constructor(public af: AngularFireAuth, public router: Router) {
this.autorized=true;
}
signOut(): void {
this.af.auth.signOut();
this.router.navigate(['/'])
}
displayCounter(count) {
console.log("holaa wey")
console.log(count);
}
html
<div class="nav-wrapper container" (valueChange)='displayCounter($event)'>
<a id="logo-container" [routerLink]="['/']" class="brand-logo"></a>
<ul class="right hide-on-med-and-down">
<li><a [routerLink]="['/about']">Acerca de</a></li>
</ul>
<ul class="right hide-on-med-and-down">
<li><a [routerLink]="['/info']">Como funciona?</a></li>
</ul>
<ul *ngIf="autorized" class="right hide-on-med-and-down">
<li><a [routerLink]="['/login']">Login</a></li>
</ul>
<!--<ul *ngIf="!autorized" class="right hide-on-med-and-down">
<li><a (click)="signOut()">Log out</a></li>
</ul> -->
<ul *ngIf="autorized" class="right hide-on-med-and-down">
<li><a [routerLink]="['/registration']">Registrarse</a></li>
</ul>
子组件(欢迎组件):
TS
export class WelcomeComponent implements OnInit {
error: any;
autorized: boolean;
@Output() valueChange = new EventEmitter();
constructor(public af: AngularFireAuth, public router: Router) {
}
ngOnInit() {
this.autorized = false;
}
loginFb() {
console.log("paso porsadsdf")
this.valueChange.emit(this.autorized);
}
html
<div class="row center">
<a (click)="loginFb()" id="download-button" class="btn-large waves-effect waves-light orange">Buscar</a>
</div>
解决方案
运行此代码。我评论并删除了一些代码。在查看发射器功能后添加所有这些。
//Parent Component ts
import { Component, Input } from '@angular/core';
@Component({
selector: 'my-parent',
templateUrl: 'src/parent.component.html'
})
export class parentComponent {
title = 'app';
error: any;
@Input() public autorized: boolean;
// constructor(public af: AngularFireAuth, public router: Router) {
// this.autorized=true;
// }
signOut(): void {
this.af.auth.signOut();
// this.router.navigate(['/'])}
displayCounter(count) {
console.log("holaa wey")
console.log(count);
}
}
//Parent Component html
<div class="nav-wrapper container">
<h1>{{title}}</h1>
<my-child (valueChange)='displayCounter($event)'></my-child>
</div>
//Child Component ts
import { Component, EventEmitter, Output , OnInit} from '@angular/core';
@Component({
selector: 'my-child',
templateUrl: 'src/child.component.html'
})
export class ChildComponent implements OnInit {
autorized: boolean;
@Output() valueChange = new EventEmitter<boolean>();
// constructor(public af: AngularFireAuth, public router: Router) {
// }
constructor(){};
ngOnInit() {
this.autorized = false;
}
loginFb() {
console.log("paso porsadsdf")
this.valueChange.emit(this.autorized);}
}
//Child Component html
<div>
<a (click)="loginFb()" id="download-button">
<button>Buscar</button>
</a>
</div>
推荐阅读
- kdb - q 和 kh 中的 NULL
- tensorflow - TF 2.3.0 使用具有样本权重的 tf 数据集训练 keras 模型不适用于指标
- javascript - JS 类列表在 for 循环中不能完全工作
- asp.net-identity - IdentityServer as saas - 架构问题
- javascript - 如何获取这个数组的值
- react-admin - 在 Datagrid 中显示具有相关数据的视图显示未找到结果
- css - 材质 UI 主题颜色不适用于 React Button
- tensorflow - 如何在 Mlflow 上保存 Tensorflow 标记化文本以进行预测?
- javascript - 制作一个程序,输出宽度和高度基于输入数字的线条图案
- c# - 即使 C# 的值为 false,标签也不会隐藏