我如何在 if 条件下使用 Angular focusout

how can i use Angular focusout with if condition

这是我的输入框

<input 
(keyup.enter)="save()" 
(focusout)="save()" 
class="editinput custom_story_input" 
type="text" 
placeholder="Create a new one"
id="tbtfeild"
value="" [(ngModel)]="childTaskmodel.childtitle"
#childtitle="ngModel"
name="childtitle" />

从上面的输入字段,我对 enter 没有任何问题,如果该字段为空,它会显示错误消息

即将 聚焦 它应该只有在输入字段中存在任何数据时才有效我该怎么做..?

我想要这样的东西:

  <input *ngIf (focusout)="childtitle.val != '' ? save() : '' " >

好吧,你可以做到:

<input [(ngModel)]="childtitle" (focusout)="childtitle ? save() : null">

测试它:除非您的输入有值,否则它不会工作。

编辑 解释:

您首先使用 [(ngModel)]="childtitle" 将您的变量绑定到输入:这允许您让 angular 知道他必须监视该变量的变化。

接下来,使用 (focusout)="childtitle ? save() : null" 将 HTML 事件绑定到此输入。作为一个值,您编写一个三元运算符:这是 if ... else ... 条件的单行代码。在那个三进制中,你声明如果这个输入有一个值(这是一个 truthy 值,一个 Javascript 概念,你会在互联网上找到更多),那么你可以运行 函数。如果没有,那么你只是 运行 null,这...什么都不做。

在您的 save() 函数中,检查您的模型 childTaskmodel.childtitle。如果它是空的,不要继续。如果您希望 keyup.enter 和 focusout 有不同的行为,只需在控制器中创建两个方法即可。