加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular2 elvis操作符和括号符号/按键访问对象

发布时间:2020-12-17 07:23:15 所属栏目:安全 来源:网络整理
导读:所以,假设我们有一个简单的对象,它包含两种不同语言的字符串 welcomeText = {“de”:“Willkommenzurück
所以,假设我们有一个简单的对象,它包含两种不同语言的字符串
welcomeText = {“de”:“Willkommenzurück!”,“en”:“欢迎回来!”}.

welcomeText是Texts对象的一个??属性,它包含所有文本并以异步方式传递
(所以我需要处理可能的未定义值,因此elvis运算符).
现在,在我的angular2模板中,我想基于当前选择的语言显示文本.
这是有效的(但不是我需要的):

..
{{Texts?.welcomeText?.de}}   // works,as well as {{Texts?.welcomeText?.en}}
..

我想要的是这个(因为语言可以改变):

..
{{Texts.?welcomeText?[language]}}
..

不幸的是,这会导致错误:

EXCEPTION: Template parse errors:
Parser Error: Conditional expression 
      {{Texts?.welcomeText?[language]}}
     requires all 3 expressions at the end of the expression ..

不知道如何解决这个错误.我只是不确定我是否使用它错了,或者它是不是打算像那样工作.目前我使用一个简单的解决方法,但我发现它有点难看,因为我有一个方法调用到处想要显示文本:

..
{{getText('welcomeText')}} 
..
..
getText(name : string){
 if(this.Texts)
   return this.Texts[name][this.language]
..

这是仅仅是要走的路还是有办法按照我想要的方式,用猫王运算符做到这一点?
非常感谢任何答案!

我实际上最终使用自定义’安全导航’管道,因为在我的情况下,无效检查和方括号链正在逐渐变为长和Angular的?运算符不适合[]约束.
import { Pipe } from '@angular/core';
import { path } from 'ramda';

@Pipe({name: 'safe'})
export class SafeNavigationPipe {
    transform(propertyPath: any[],source: any) {
        return path(propertyPath,source);
    }
}

其中path function完成所有工作 – 在给定路径上检索数据,并在路径无法解析时立即返回undefined.

并且可以像这样使用:

{{ [userId,dayIdx,shiftIdx,'status'] | safe:usersList  }}

数组项可以是动态值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读