【问题标题】:How to avoid part of template from interpolating in angular5?如何避免部分模板在角度 5 中插值?
【发布时间】:2018-04-03 04:28:54
【问题描述】:

假设我有一个组件如下:

@Component({
  providers: [],
  selector: 'test-component',
  styles: [],
  template: `
    <h1>Title</h1>
    <div class="piece-code">
      <pre>
        <code class="javascript">
        export default class Test {
          say() {
            console.log('hello world')
          }
        }
        </code>
      </pre>
    </div>
    `
})
export class TestComponent {

}

现在不正确,因为{ } 出现在模板中(在pre &gt; code 块中),转义字符如{}&lt;&gt; 手动会很困难并使代码难以阅读和维护。我想知道是否有办法停止角度模板引擎插值特定区域?就我而言,应该是pre &gt; code?

【问题讨论】:

    标签: angular templates interpolation


    【解决方案1】:

    有一个属性ngNonBindable,您可以将其设置为目标元素以停止特定区域的角度插值。

    <pre ngNonBindable>
      {{ some }}
    </pre>
    

    但是这个指令对你的情况没有帮助,因为单括号不被视为插值。


    对于单括号({}),您可以用双括号将它们括起来,例如{{'{'}}{{'}'}}

    <pre>
      <code class="javascript">
        export default class Test {{ '{' }}
          say() {{ '{' }}
            console.log('hello world')
          {{ '}' }}
        {{ '}' }}
      </code>
    </pre>
    

    另一种方法是在组件中定义这些代码并绑定到代码元素的innerHTML

    【讨论】:

    • 感谢您的帮助。在我的情况下,我更喜欢不使用{{ '{' }},这太过分了。无论如何,非常感谢,让我想想是否有任何其他方式来组织我的代码
    • @Howard 欢迎您! :-) 也许绑定到代码的innerHTML 更合适。无论如何,祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多