Angular 将常量值的子集传递给角度分量

Angular 将常量值的子集传递给角度分量,angular,object,constants,subset,Angular,Object,Constants,Subset,在我的一个模型中定义了以下常量 export const NEWS_TYPE_TEXT = { News: 'News', Interview: 'Interview', Digest: 'Digest', CompanyAnalysis: 'Company Analysis', }; 通常我会将整个常数传递给组件,即: <mb-simple-select [options]="NEWS_TYPE_TEXT&quo

在我的一个模型中定义了以下常量

    export const NEWS_TYPE_TEXT = {
      News: 'News',
      Interview: 'Interview',
      Digest: 'Digest',
      CompanyAnalysis: 'Company Analysis',
    };
通常我会将整个常数传递给组件,即:

<mb-simple-select [options]="NEWS_TYPE_TEXT"> </mb-simple-select>

但是现在我只需要传递这些值的一个子集。 (例如,只有“新闻”和“摘要”)

我尝试了以下方法,但无效:

<simple-select [options]="NEWS_TYPE_TEXT.News, NEWS_TYPE_TEXT.Digest"></simple-select>

然后我尝试了以下方法。这可以工作,但将值作为数组传递,并且只传递实际文本值,不传递键:

<simple-select [options]="[NEWS_TYPE_TEXT.News, NEWS_TYPE_TEXT.Digest]"></simple-select>

是否有一种优雅的方式将这个值子集传递给组件,以便它们保留其对象键:值结构


提前感谢。

我建议您为所需选项定义类并通过它

i、 e:

  • 为新闻、摘要定义类X
  • 在ts内指定X的值
  • 定义@Input()以在简单选择中支持X
  • 将X传递给简单选择

  • 试着这样做:


    我认为这个问题没有直接的答案。您可能需要创建一个快速管道来生成一个仅包含您希望具有的特性的对象

    试试下面的方法

    拔管.ts

    从“@angular/core”导入{Pipe,PipeTransform};
    @管道({name:“pull”,pure:true})
    导出类实现PipeTransform{
    转换(值:{[key:string]:string},args?:数组):任意{
    如果(!value)返回null;
    返回参数减少((会计科目,当前)=>{
    acc[curr]=值[curr];
    返回acc;
    },Object.create(null));
    }
    }
    
    用法

    
    
    工作示例:



    管道命名者是RxJS操作符。除了名称之外,它与手头的问题完全无关。

    我也尝试过这个问题,但不幸的是它抛出了一个语法错误。谢谢。是的,这很有效!一个简单的解决方案,谢谢。虽然这确实意味着在传递密钥时必须自己手动输入密钥。我想没有办法用一个值来优雅地实现它,我想另一种方法是在ts中的对象条目上创建一个映射。但这是最简单的方法!有趣的解决方案,谢谢。也许出于我们的目的有点过度设计,这意味着我们最好重构我们的常量结构。但可能会在稍后试一试。再次感谢。