简体   繁体   English

如何在 Angular 视图中的 object 字符串中传递动态变量值

[英]How to pass dynamic variable value within an object string in Angular View

I want to assign variable's value from Component to object string within Angular view.我想将 Component 中的变量值分配给 Angular 视图中的 object 字符串。

This is snippet from typescript file这是 typescript 文件的片段

@Input() someVariable: string = '';
let someValueFromTypeScript: string = '';

ngOnChanges(): void {
   this.someValueFromTypeScript = (this.someVariable) ?  this.someVariable : 'default_value';
}

This is snippet from corresponding template这是来自相应模板的片段

<div data-dl='{"prop1":"val1", "prop2":"val2", "prop3":"someValueFromTypeScript"}'>
...
</div>

I tried using string interpolation but it didn't worked.我尝试使用字符串插值,但没有奏效。 One constraint is that value to data-dl should be string only, so I cannot do something like:一个限制是data-dl的值应该只是字符串,所以我不能做类似的事情:

<div attr.data-dl="JSON.stringify value of property">
...
</div>

Define a function into component.ts:在component.ts中定义一个function:

getSomeValueFromTypeScript(){
  return this.someValueFromTypeScript;
}

And then call it from html component into your object:然后将其从 html 组件调用到您的 object 中:

<div data-dl='{"prop1":"val1", "prop2":"val2", "prop3": getSomeValueFromTypeScript() }'>
...
</div>

Since you insist on data-dl being a string, you could use the interpolation like following由于您坚持data-dl是一个字符串,因此您可以使用如下插值

<div attr.data-dl="{prop1:val1, prop2:val2, prop3:{{someValueFromTypeScript}}}">
  ...
</div>

On the other hand if you wish to have an object for data-dl attribute, you could try the property binding syntax另一方面,如果您希望为data-dl属性使用 object,您可以尝试属性绑定语法

<div [attr.data-dl]="{'prop1':'val1', 'prop2':'val2', 'prop3':someValueFromTypeScript}">
  ...
</div>

Note: The type of quotation marks (single or double) doesn't have any bearing on the values.注意:引号的类型(单引号或双引号)对值没有任何影响。 The only condition is it should be used interchangeably for member variables and string literals.唯一的条件是它应该可互换地用于成员变量和字符串文字。

<div [attr.data-dl]="{'prop1':'val1', 'prop2':'val2', 'prop3':someValueFromTypeScript}">

is similar to类似于

<div [attr.data-dl]='{"prop1":"val1", "prop2":"val2", "prop3":someValueFromTypeScript}'>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM