2016-12-29 104 views
0

正如所料,在Angular 2中,我可以创建组件,如果我在模板中使用它们,它们将呈现。在此代码,“文本”是另一个部件的选择和它的作品如预期,如果我通过一些字符串转换成[值]:如何从Angular 2中的数据渲染静态Angular组件?

@Component({ 
     selector: 'my-app', 
     template: ` 
     <div class="main"> 
      <text [value]="testModel.data.value"></text> 
     </div> 
     ` 
    }) 
export class AppComponent { 
    name = 'Angular Example'; 
    testModel = { 
    data: { 
     value: `Regular string text works fine.` 
    } 
    } 
} 

但我需要的是字符串的HTML数据传递到一个组件而且数据还可以包含角度成分,更多的东西是这样的:

@Component({ 
      selector: 'my-app', 
      template: ` 
      <div class="main"> 
       <text [value]="testModel.data.value"></text> 
      </div> 
      ` 
     }) 
    export class AppComponent { 
     name = 'Angular Example'; 
     testModel = { 
     data: { 
      value: `<b>Some</b> 
       text value to 
       <inner-component> 
        this component gets ignored when text is rendered 
       </inner-component> 
       render 
       ` 
     } 
     } 
    } 

我看到其他的答案中动态生成组件,但我不需要的是,我已经只是静态的预先定义的组件创建可能存在于我的数据字符串中。

这里是文本组件:

import { Component, Input, ViewChild } from '@angular/core'; 

@Component({ 
    selector: 'text', 
     template: ` 
     <div > 
      <div [innerHtml]="value">loading...</div> 
     </div> 
     ` 
    }) 
    export class TextComponent { 
     @Input() value: string; 
    } 

理想我传递字符串会任何HTML渲染以及呈现的任何角度。以下是我的意思是在角1:https://plnkr.co/edit/FacA3AwOqJA2QARK28c8?p=preview

编辑:不是重复

我没有看到这个普拉克是如何回答:http://plnkr.co/edit/wh4VJG?p=preview

+0

是否有一个理由,为什么你不希望将其添加为一个孩子零件? – Erevald

+0

我打开任何方式来做到这一点,只要它可以在我的html字符串中找到任何地方,甚至不止一次.. – jssayin

+0

你应该这样做http://plnkr.co/edit/wh4VJG?p=preview – Milad

回答

0

“我看到其他的答案为动态生成组件,但我不需要,只是我已经创建的静态预定义组件,可能存在于我的数据字符串中。“

即使只是静态预定义组件,Angular需要编译它,否则它将被视为正常的html标记。

在HTML

<inner-component> 
       this component gets ignored when text is rendered    
    </inner-component> 

innerHTML的指令刚刚替换所提供的HTML元素的内部HTML,但它不会再编译,所以谁的要采取编译你inner-的护理组件

因此,您需要找到一种方法来动态编译该html片段。

你应该找到自己的方式在

How can I use/create dynamic template to compile dynamic Component with Angular 2.0?

Equivalent of $compile in Angular 2

和工作的例子是http://plnkr.co/edit/wh4VJG?p=preview

+0

谢谢,但这些是我正在谈论的其他答案。我做了这个角1的例子,我正在寻找:https://plnkr.co/edit/FacA3AwOqJA2QARK28c8?p=preview – jssayin

+0

@jssayin,老兄,你正在使用$ scope.eval !!!! Angular2中没有这样的事情,只有一种方法,那就是遵循上面的链接, – Milad

相关问题