【问题标题】:escape double quotes inside double quotes and single quotes在双引号和单引号内转义双引号
【发布时间】:2017-02-08 15:42:23
【问题描述】:

我想应用这种风格:

 [ngClass]="{'login-form__text login-form__email' : '!displayErrors', 
                 'login-form__text login-form__email-confirm error': 'displayErrors && this.Form.get(\'email\').value !=\"" && !Form.valid && Form.errors?.mismatch'}"

不幸的是,我收到了这个错误:

Unexpected character "EOF" (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.) ("

而且我确定这是因为我的 ngclass 中有引号,而我没有正确地转义它们。我试图在上面的值检查中转义双引号。但它仍然显示错误。

如何正确转义上面的字符串?

【问题讨论】:

  • 如果您使用的是模板字面量,则 value !=\"" ... value !=\"\" 或 value != "" 是否存在错误
  • 仔细查看问题中突出显示的语法。 'login-form__text login-form__email-confirm error': 'displayErrors && this.Form.get('email').value ... 您将单引号放在单引号内。在评估之后这将导致错误。

标签: javascript angular typescript escaping


【解决方案1】:

必须expression 传递给[ngClass],而不是字符串

另外,displayErrorsvariable,所以当然应该将它用作变量。

[ngClass]="{'login-form__text login-form__email' : !displayErrors, 
            'login-form__text login-form__email-confirm error': displayErrors && 
            this.Form.get('email').value !== '' && Form.hasError('mismatch') }"

或者,如果电子邮件是required,您可以简化:

[ngClass]="{'login-form__text login-form__email' : !displayErrors, 
            'login-form__text login-form__email-confirm error': displayErrors && 
            !this.Form.get('email').hasError('required') && Form.hasError('mismatch') }"

提示:

您无需检查表单是否无效有效以及是否有mismatch 错误,您只需使用hasError() 检查它是否有一些错误方法。

【讨论】:

  • 他甚至能够捕捉到Form 视野中的对象吗?
  • 它仍然返回错误,兄弟。他的表情有些不对劲。 this.Form.get('email').value !== "" 行完全错误。
  • @developer033,还是不行。即使我使用表达式与字符串。
  • @Kinduser 是对的。这行有问题:this.Form.get('email').value !== ""。有没有更好的方法来检查空字符串?
  • @Euridice01 和@Kinduser,这是正确的。无论如何,错误必须在代码的另一部分。您是否将form 归因于变量(在您的情况下为Form)?此外,如果需要电子邮件,您可以按照我所说的使用hasError 进行检查。 !this.form.get('email').hasError('required')...
猜你喜欢
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 2016-12-17
  • 2011-04-19
相关资源
最近更新 更多