首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngTemplateOutlet :事件处理程序失败

ngTemplateOutlet :事件处理程序失败
EN

Stack Overflow用户
提问于 2021-03-07 08:04:56
回答 1查看 38关注 0票数 0

编辑添加的stackblitz repro :https://stackblitz.com/edit/ng-template-outlet-7ivu6e?file=app/grid/grid.component.ts

在我的组件中,我使用ngTemplateOutlet动态更改组件视图的某些部分的内容:

代码语言:javascript
复制
     <ng-template #defaultExpanderTemplate>
                <button type="button" class="btn btn-link px-0 text-left"
                    (click)="toggleRow(dataItem, 'id'); toggleButton(dataItem.id)"
                    [ngClass]="{'toggled': toggledButtons[dataItem.id]}">
                    <i class="fas fa-chevron-down mr-2"></i>
                    {{dataItem[col.displayField] || dataItem[col.field]}}
                </button>
            </ng-template>
            <ng-container [ngTemplateOutlet]="expanderTemplate || defaultExpanderTemplate"
                [ngTemplateOutletContext]="{ $implicit: dataItem }">
            </ng-container>

toggleRowtoggleButton事件处理程序是在我的组件中定义的。

现在,我定义了实际使用组件的expanderTemplate

代码语言:javascript
复制
<my-component>
  <ng-template #expanderTemplate let-dataItem>

   <div class="color-tag" [ngClass]="dataItem.colorTag"> 
    <button type="button" class="btn btn-link px-0 text-left"
        (click)="toggleRow(dataItem, 'id'); toggleButton(dataItem.id)"
        [ngClass]="{'toggled': toggledButtons[dataItem.id]}">
        <i class="fas fa-chevron-down mr-2"></i>
        {{dataItem[col.displayField] || dataItem[col.field]}}
    </button>
   </div> 
</ng-template>
</my-component>

请注意,此模板只是在上面的defaulTemplate中使用的按钮周围添加了一个div元素。也许有更好的方法可以做到这一点?

现在,调用组件不知道事件,并且我在控制台中得到了异常:

错误TypeError: ctx_r12.toggleRow不是函数

我明白,但我该如何实现这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2021-03-10 01:59:28

诀窍是调用grid.toggleRow (对于其他函数也是如此)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66511950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档