2016-11-09 4 views
0

В моей Угловое 2 приложения У меня есть класс Руководство:Дополнительная информация хранится в объекте

export class Guide{ 
    id: number; 
    name: string; 
} 

Когда я хранить данные в объекте этого класса, Угловое создает больше переменных, в зависимости от ответа , Если я получаю ответ вроде:

{ 
    "id": 1, 
    "name": "Guide", 
    "created_at": "2016-11-04T08:50:39+0000" 
} 

тогда мой объект типа Guide также имеет переменную «created_at» со значением «created_at».

Как я могу просто сохранить две переменные id и name в моем объекте?

+0

Это то, что происходит, когда вы 'JSON.parse'. Ввод не имеет ничего общего с поведением во время выполнения. Просто удалите, если это проблема. Или просто игнорировать его –

+0

Я не использую 'JSON.parse'. Я использую: 'this.guideService.getGuide(). Subscribe (guide => { this.guide = guide; });' – Oudstand

+0

Где-то он используется. Вероятно, Angular 'res.json()'. –

ответ

1
this.guide = guide; 

Переписывает ваш объект с помощью нового руководства по объекту, и он не бросает его, поэтому вы получаете дополнительные значения. Объекты работают по ссылке, и вы переписываете ссылку.

Если вы используете машинопись попробовать что-то вроде:

this.guide = <Guide>guide; 

Хотя я не уверен, что это позволит устранить другие значения.

Другой альтернативой является то, что вам нужно построить конструктор на объекте Руководство

export class Guide{ 
    constructor(object:any) 
    { 
    this.id = object.id; 
    this.number = object.number; 
    } 

    id: number; 
    name: string; 
} 

тогда вы называете это как этот

this.guide = new Guide(guide); 
+0

'this.guide = guide;' не будет удалять какие-либо свойства, так как во время выполнения он не отличается от версии без типа. Ваша другая версия будет работать. Или просто скопируйте все известные свойства объекта вместо создания нового для каждого события. Как 'this.guide.id = guide.id; this.guide.number = guide.number; 'Это также может быть инкапсулировано внутри функции. – Matthias247

+0

Да, это то, что я думал. конструктор лучше, потому что вы делаете это один раз, и вы можете поместить свою логику разбора туда один раз. –

Смежные вопросы