Подтвердить что ты не робот

Когда создавать конструктор в Angular2 typescript?

Вот некоторые примеры конструкторов из Angular 2 документов:

export class AppComponent implements OnInit {
    title = 'Tour of heroes';
    heroes: Hero[];
    selectedHero: Hero;

    constructor(private heroService: HeroService) { }

    getHeroes() {
        this.HeroService.getHeroes().then(heroes => this.heroes = heroes);
    }
}

и...

class Car {
    constructor(engine, tires, doors){
        this.engine = engine;
        this.tires = tires;
        this.doors = doors;
    }
}

Я не понимаю, почему и когда нужно создать constructor() в angular 2/typescript (я прочитал официальную документацию, где они создают конструктор для Injection Dependency и для служб).

4b9b3361

Ответ 1

Конструкторы определяют, какие параметры необходимо предоставить при создании экземпляров ваших объектов. В TypeScript вы также можете добавить модификаторы, такие как private или public, чтобы определить в тех же свойствах класса времени и установить их значения с предоставленными.

Например:

class Car {
  constructor(private engine:string, private tires:string, private doors:number){
  }
}

похож на:

class Car {
  constructor(engine:string, tires:string, doors:number){
    this.engine = engine;
    this.tires = tires;
    this.doors = doors;
  }
}

В Angular2 конструкторы используются для инъекции зависимостей. Соответствующий декоратор (@Component или Injectable) собирает метаданные (типы или подсказки внутри @Inject), чтобы определить, что предоставить объекту для создания экземпляра.

Помните, что конструкторы не являются частью жизненного цикла компонента. Свойства можно установить позже Angular2 на этом уровне...

Ответ 2

Конструкторы контроллера в основном используются для инъекций/услуг зависимостей, как вы упомянули, а также (в моих приложениях) для инициализации сложных значений по умолчанию, основанных на самих сервисах. Поскольку конструктор работает до того, как шаблон контроллера инициализирован - никакие переменные не будут отображаться точно, следовательно, необходимость в ngOnInit и других подобных методах. Эти методы "bootstrap" должны использоваться для выполнения обычных "конструктивных" обязанностей, чтобы шаблон/представление могли обращаться к данным.

Что касается конструкторов служб, некоторые из моих компонентов обычно используют конструктор и инициализируют различные части службы на основе существующих пользовательских данных, поскольку они действуют намного больше, чем стандартные классы.

Эти ответы помогут: