用角度两次评估表达式

时间:2019-06-14 20:02:09

标签: html css angular angular-material

我正在尝试评估来自另一个组件内部的一个组件的表达式。

下面是代码

Parent.component.ts

parentData: any= {
    name: 'xyz',
    url: '/test?testid={{element["TestId"]}}'
};

Parent.component.html

<child [data]="parentData"></child>

child.component.ts

@Component({ 
selector:'child'
...
})
export class ChildComponent {
    @Input() data: any;
}

child.component.html

<td mat-cell *matCellDef="let element">
    <a href="{{data.url}}">{{element["TestName"]}}</a>
</td>

该href被评估为/test?testid={{element["TestId"]}}。它需要是/test?testid=123

element["TestId"] - is to be evaluated in child scope.

我找到了这个link,但不确定如何将其应用于我的情况。

编辑:StackBlitz添加链接包含类似的示例。 我正在尝试使ChildComponent通用,这就是为什么要让父级决定要对element["TestId"]进行评估的列 请忽略我的修改,我仍在学习如何更好地编写问题。

1 个答案:

答案 0 :(得分:1)

您可以通过该属性制作函数

parentGridData = {
  ...
  url: element => `http://www.google.com/searchText=${element["name"]}`
};

,然后将适当的参数传递给它:

<a href="{{gridData?.url(element)}}">

但是请确保您的函数不包含大量计算。

Forked Stackblitz