angular - как установить параметры перечисления в интерфейсе - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь установить параметры перечисления в интерфейсе, например:

structure.ts

export enum Type {
    Edit = 'edit',
    Add = "add"
}

export interface Test {
    type: Type,
    name: String,
    id: String
}

component.ts:

import {Test, Type} from 'structure';

test: Test;

ngOnInit(): void {
    this.test.type = Type.Edit
}

сообщение об ошибке :

RROR TypeError: Cannot set property 'type' of undefined

Если это не вложенная структура, она может работать нормально:

component.ts:

 type:Type;

 ngOnInit(): void {
    this.type = Type.Add;
}

Ответы [ 3 ]

3 голосов
/ 05 мая 2020

Вы не сделали initialize для свойства test, его следует инициализировать как

test: Test = {};

Stackbliz https://stackblitz.com/edit/angular-check-mediaquery

2 голосов
/ 05 мая 2020

Вы получаете эту ошибку, потому что ваше свойство не инициализировано. Правильный способ сделать это и избежать жалоб со стороны TypeScript:

test: Test;

ngOnInit(): void {
  this.test = { type: Type.Edit, name: 'Name', id: 'sqsqsqsqsqs' };
}

Не используйте String (заглавные буквы) в качестве типа в вашем интерфейсе. Вместо этого используйте string (нижний регистр).

0 голосов
/ 08 мая 2020
enum Type {
    Edit = 'edit',
    Add = "add"
}

export interface Test {
    type: Type,
    name: String,
    id: String
}

В компоненте

test: Partial<Test>;

ngOninit() {
   this.test.type = Type.Add;
  }

Частично можно использовать, если все значения изначально недоступны для присвоения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...