Angular - JSX 和模板文字中的转义变量以将其用作参数

Posted

技术标签:

【中文标题】Angular - JSX 和模板文字中的转义变量以将其用作参数【英文标题】:Angular - Escaping variable in JSX and template literal to use it as parameter 【发布时间】:2021-12-27 21:56:17 【问题描述】:

我目前正在使用 JSX 模板,我向模板声明了一个本地数据变量,并尝试将其作为参数传递给我在 Angular 属性之一中导出的组件。问题是 JIT 编译器将我标记为解析错误,好像在模板文字中以这种方式转义数据是不正确的。代码如下:

const data = [
  
    fontIcon: 'settings',
    action: () =>  return alert(1) 
  ,
  
    fontIcon: 'favorite',
    action: () =>  return alert(2) 
  
]

export const MenuExpansionPanel = 
  render: (args: Interface) => (
    props: args,
    template: `
      <ui-kit-menu-expansion-panel
      title="Menu title"
      [disabled]="false"
      [expanded]="true"
      [hideToggle]="false"
      togglePosition="after"
      [draggable]="false"
      [icons]="$data"
      >
        Content
      </ui-kit-menu-expansion-panel>
    `
  )

还有错误:

如果您知道如何解决它,请不要犹豫。 谢谢!

【问题讨论】:

【参考方案1】:

解决方案是:

export const MenuExpansionPanel = 
  render: (args: Interface) => (
    props: 
      data: [
        
          'fontIcon': 'settings',
          'action': () => 
            return alert('Settings icon clicked!')
          
        ,
        
          'fontIcon': 'favorite',
          'action': () => 
            return alert('Favorite icon clicked!')
          
        
      ],
      ...args
    ,
    template: `
              <ui-kit-menu-expansion-panel
              title="Menu title"
              [disabled]="false"
              [expanded]="true"
              [hideToggle]="false"
              togglePosition="after"
              [draggable]="false"
              [icons]="data"
              >
                Content
              </ui-kit-menu-expansion-panel>
            `
        )
    

【讨论】:

以上是关于Angular - JSX 和模板文字中的转义变量以将其用作参数的主要内容,如果未能解决你的问题,请参考以下文章

JSX 中的 和 $ 有啥区别?

为模板中的变量赋值 - Angular7

Angular 2 - 在模板中的变量内显示变量

ngFor(Angular 9)中的动态模板引用变量

*ngFor 如何与 Angular 2 中的模板变量一起工作?

将模板变量呈现为 HTML