Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么角事件发射器不';当组件嵌套在其他组件中时不工作?_Angular_Angular Event Emitter_Ng Content - Fatal编程技术网

Angular 为什么角事件发射器不';当组件嵌套在其他组件中时不工作?

Angular 为什么角事件发射器不';当组件嵌套在其他组件中时不工作?,angular,angular-event-emitter,ng-content,Angular,Angular Event Emitter,Ng Content,在card component html中,我有ng内容,我将card item组件放在card组件中。 为什么在这种情况下我不能发出值 例1 card.component.html <div> <ng-content> </div> card.component.html 如果我将car item组件移到card组件之外,事件发射器工作正常 例2 card-item.component.html <div>

在card component html中,我有ng内容,我将card item组件放在card组件中。 为什么在这种情况下我不能发出值

例1

card.component.html

  <div>
      <ng-content>
  </div>
card.component.html


如果我将car item组件移到card组件之外,事件发射器工作正常

例2

card-item.component.html

<div>
  <div class="card-header"> header </div>
  <div class="card-body"> content </div>
  <div class="card-footer"> footer</div>  
</div>      
 
card-item.component.html
标题
内容
页脚



是否有任何方法可以像第一个示例中那样发出值?

您应该在html元素或ng容器上调用事件发射器

<ng-container (closeEmitter)="onClose($event)">
<card-item></card-item>
</ng-container>. or on an html element 
<div (closeEmitter)="onClose($event)">
<card-item></card-item>
</div>

. 或者在html元素上

或者您可以创建一个hidden和show类,或者使用ngHide或ngShow变量-ngClass是最干净的,因为您可以使用css visibility:hidden并在hide类中将高度设置为0。是否可以在div或ng容器上调用事件发射器?我不这么认为。是的,但更好的方法是使用ngClass和一个布尔运算符来设置类[ngClass]=“yourtruthyvariable?”“show':“hide”或一些变量-它更干净,我们可以从组件中监听事件。@Nikolay我们不知道什么可以调用事件emmitter,或者他是否在组件端有某种主机绑定。我假设他做了——这是一段更大代码的一小部分——也许我错了——它发生了。
<card></card>
<card-item (closeEmitter)="onClose($event)"></card-item>
<ng-container (closeEmitter)="onClose($event)">
<card-item></card-item>
</ng-container>. or on an html element 
<div (closeEmitter)="onClose($event)">
<card-item></card-item>
</div>