Angular // ng-select 在文本区域内对从数组中提取的文本使用插值
Angular // ng-select Use interpolation within a textarea on a text pulled from an array
在我刚开始接触 Angular 和 运行 的时候,我仍然无法解决问题。
我想要完成的是创建一种将人名添加到消息模板的方法。
模板是从这样的文件加载的
this.http.get('../../assets/templatefiles/customtemplates.json').subscribe(data => {this.templateArray = data as any [];
JSON文件结构如下
[{
"Id": 1,
"Type": "SR Templates",
"Name": "Message 1",
"Body": "Some meaningful text here"
},
{
"Id": 2,
"Type": "SR Templates",
"Name": "Message 2",
"Body": "Some more meaningful text here"
},
{
"Id": 3,
"Type": "GTFO Templates",
"Name": "Message 3",
"Body": "Guess what? Exactly, some even more..blahhh"
}]
到目前为止一切都很好。然后,在我的模板中,我使用 ng-select 创建下拉列表以显示按 Type
分组的选项
<ng-select [items]="templateArray"
bindLabel="Name"
bindValue="Body"
groupBy="Type"
[(ngModel)]="selectedTemplate"
>
<ng-template ng-optgroup-tmp let-item="item">
<strong>{{item.Id}}</strong>
</ng-template>
</ng-select>
到目前为止...似乎工作正常。模板按类型分组并显示在下拉列表中就好了。
selection 下面是一个文本区域,其中应该显示“Body”值。工作正常,当 select 从下拉菜单中选择模板时,文本在文本区域中显示正常。
我面临的问题是有一个输入字段,用于输入消息将发送到的人名。
我得到的名字如下:
<input type="text" [(ngModel)]="srcName" class="form-control" placeholder="Name">
我有点困惑的是如何使用插值 get/add 消息中的人名?
我希望有一些东西,比如只需要更改 JSON 中的文本并向其中添加插值,但显然这不起作用呵呵。
{
"Id": 1,
"Type": "SR Templates",
"Name": "Message 1",
"Body": "Dear {{srcName}, Some meaningful text here"
}
我一直在上下搜索,但最终还是卡住了,我迫切希望在我必须去的方向上轻推,以实际将该名称与数组中的模板一起插入到文本区域中。 .
您可以制作一个函数,将您的 selected 模板和您输入的名称连接起来,如下所示:
onSubmit() {
this.message = `Dear ${this.srcName}, ${this.selectedTemplate}`;
}
然后你可以添加一个执行这个功能的按钮:
<button (click)="onSubmit()">Submit</button>
现在,只要您 select 您想要的模板并将您想要的名称添加到输入中并单击提交按钮,您就会收到一条包含您想要的信息的串联消息。
如果您需要更多解释,请点击这里 a live demo。
在现场演示中,a 使用了正常的 HTML select,但它应该与 angular material select.
相同
##编辑
如果您需要将 srcName
放在模板主体中,则必须在模板主体中创建一个占位符,例如:
"Guess what? Exactly {srcName}, some even more..blahhh"
而不是:
"Guess what? Exactly, some even more..blahhh"
那么你将不得不改变onSubmit
函数:
onSubmit() {
this.message = this.selectedTemplate.replace('{srcName}', this.srcName)
}
我也将更改添加到现场演示中。
在我刚开始接触 Angular 和 运行 的时候,我仍然无法解决问题。 我想要完成的是创建一种将人名添加到消息模板的方法。
模板是从这样的文件加载的
this.http.get('../../assets/templatefiles/customtemplates.json').subscribe(data => {this.templateArray = data as any [];
JSON文件结构如下
[{
"Id": 1,
"Type": "SR Templates",
"Name": "Message 1",
"Body": "Some meaningful text here"
},
{
"Id": 2,
"Type": "SR Templates",
"Name": "Message 2",
"Body": "Some more meaningful text here"
},
{
"Id": 3,
"Type": "GTFO Templates",
"Name": "Message 3",
"Body": "Guess what? Exactly, some even more..blahhh"
}]
到目前为止一切都很好。然后,在我的模板中,我使用 ng-select 创建下拉列表以显示按 Type
分组的选项<ng-select [items]="templateArray"
bindLabel="Name"
bindValue="Body"
groupBy="Type"
[(ngModel)]="selectedTemplate"
>
<ng-template ng-optgroup-tmp let-item="item">
<strong>{{item.Id}}</strong>
</ng-template>
</ng-select>
到目前为止...似乎工作正常。模板按类型分组并显示在下拉列表中就好了。 selection 下面是一个文本区域,其中应该显示“Body”值。工作正常,当 select 从下拉菜单中选择模板时,文本在文本区域中显示正常。
我面临的问题是有一个输入字段,用于输入消息将发送到的人名。 我得到的名字如下:
<input type="text" [(ngModel)]="srcName" class="form-control" placeholder="Name">
我有点困惑的是如何使用插值 get/add 消息中的人名? 我希望有一些东西,比如只需要更改 JSON 中的文本并向其中添加插值,但显然这不起作用呵呵。
{
"Id": 1,
"Type": "SR Templates",
"Name": "Message 1",
"Body": "Dear {{srcName}, Some meaningful text here"
}
我一直在上下搜索,但最终还是卡住了,我迫切希望在我必须去的方向上轻推,以实际将该名称与数组中的模板一起插入到文本区域中。 .
您可以制作一个函数,将您的 selected 模板和您输入的名称连接起来,如下所示:
onSubmit() {
this.message = `Dear ${this.srcName}, ${this.selectedTemplate}`;
}
然后你可以添加一个执行这个功能的按钮:
<button (click)="onSubmit()">Submit</button>
现在,只要您 select 您想要的模板并将您想要的名称添加到输入中并单击提交按钮,您就会收到一条包含您想要的信息的串联消息。
如果您需要更多解释,请点击这里 a live demo。
在现场演示中,a 使用了正常的 HTML select,但它应该与 angular material select.
##编辑
如果您需要将 srcName
放在模板主体中,则必须在模板主体中创建一个占位符,例如:
"Guess what? Exactly {srcName}, some even more..blahhh"
而不是:
"Guess what? Exactly, some even more..blahhh"
那么你将不得不改变onSubmit
函数:
onSubmit() {
this.message = this.selectedTemplate.replace('{srcName}', this.srcName)
}
我也将更改添加到现场演示中。