【问题标题】:How to access template variable values of type ViewContainerRef?如何访问 ViewContainerRef 类型的模板变量值?
【发布时间】:2019-10-13 15:10:31
【问题描述】:

我在模板中使用ViewContainerRef 渲染组件。但是,我想在组件上动态访问模板中设置的值。我读到的文章说,当使用ElementRef 访问模板时可以访问所述值,因为我们有一个nativeElement,但在ViewContainerRef 的情况下我没有找到任何替代方案。我不确定,但我会在 context 对象中获取模板中设置的值吗?

这是我正在尝试构建的示例: https://stackblitz.com/edit/angular-kfaxuj

【问题讨论】:

    标签: angular angular2-template


    【解决方案1】:

    我只能通过实例化组件的相同函数来实现传递数据,而不是按照您的要求通过 HTML...我不确定是否可以使用 ng-template...也许如果您更改为 ng -container,然后引用一个模板,你可以得到正确的上下文,除此之外我不确定......

    在以下示例中,我可以根据 items 数组的索引将项目传递给 HelloComponent https://stackblitz.com/edit/angular-gmnpku?file=src%2Fapp%2Fapp.component.ts

    无论如何,如果您只需要向组件发送数据,我会说这是一种更好的做法,而不是通过 html 引用发送数据

    【讨论】:

    • 是的,确实如此。但是,假设dataItem 使用async 管道填充在表中,并且在数据时间我将无法访问组件端dataItem 内的数据来操作并将数据发送到ng-template
    • 你可以通过管道映射你的数据 observable 并将结果发送到之前创建的 dynamicComponentRef.instance,它需要是一个带有 setTimeout 或其他东西的异步调用
    • 我已经更新了 stackblitz 示例并且它起作用了...这不是最好的解决方案,但你可以做一个装饰器或一些辅助函数来避免每次都使用这个逻辑
    猜你喜欢
    • 2013-12-15
    • 2018-09-21
    • 2021-02-18
    • 2014-07-13
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2018-06-24
    相关资源
    最近更新 更多