Должен ли я импортировать класс, внедренный в другой конструктор класса? - PullRequest
0 голосов
/ 17 июня 2019

Я должен создать регистр по умолчанию / пустой экземпляр (для оценки), который использует другой класс (клиент), который сам использует другой класс (адрес).Интересно, должен ли я импортировать как адрес, так и клиент, или мой код можно улучшить.

Моя проблема в том, что если я хочу сделать пустую оценку, я получу

import {Client} from '../../models/client.model';
import {Adress} from '../../models/adress.model';
// other things
this.estimate = new Estimate('', new Client('', new Adress('', '', '', ''), '', '', '', '', ''), '', '', '', '');

и я должен импортировать как клиента, так и адрес.Я думал, что Dependency Injection достаточно для импорта только Клиента.Мой конструктор клиента выглядит следующим образом:

import {Adress} from './adress.model';
export class Client {
constructor(
    public adress: Adress,
    // other properties
  ) {
  }

Я ожидаю, что Adress будет включен в импортированный клиент первого фрагмента кода.Есть ли правильный способ сделать это?

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Вы можете использовать модель следующим образом:

export class AdressModel {
    public city: string;
    public street: string;
    public flat: string;
    public zip: string;

    constructor(obj?: Partial<AdressModel>) {
        this.city = obj && obj.city || '';
        this.street = obj && obj.street || '';
        this.flat = obj && obj.flat || '';
        this.zip = obj && obj.zip || '';
    }
}
1 голос
/ 17 июня 2019
export classe Estimate {
  constructor(
    public estimate: string,
    public client = new Client(''),
  ) {}
}

export class Client {
  constructor(
    public name: string,
    public address = new Address('')
  ) {}
}

export class Address {
  constructor(
    public name: string,
    public street = '',
    public city = '',
  ) {}
}

Теперь вам нужно всего лишь позвонить

estimate = new Estimate('');

Если у вас есть вопросы о синтаксисе или о том, как он работает, не стесняйтесь задавать их.

...