Как я могу создать и использовать модуль класса на провайдерах Ionic2?

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

Пример (как я хочу):

провайдеры / мой-провайдер / My-provider.ts

export class MyParentClass {
    //...
}
export module a {
    class MyChildClass {
        //...
    }
}

страниц / дома /home.ts

import { Component } from '@angular/core';
import { MyParentClass, MyChildClass } from '../../providers/my-provider'
@Component({
    selector: 'page-home',
    templateUrl: 'home.html',
    providers: [
        MyParentClass,
        MyChildClass
    ]
});
export class homePage {
    constructor(public parentClass: MyParentClass, public childClass: MyChildClass) {
    }

}

1 ответ

Решение

Вы можете вводить только те классы, которые помечены как Injectable. Пометьте свой classB как Injectable, а затем внедрите его в конструктор, как вы это сделали.

Чтобы использовать правильное внедрение зависимостей, измените модификатор доступа на private. Затем вы можете получить доступ к вашему classB в classA.

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

Должно выглядеть примерно так:

провайдеры / мой-провайдер / My-provider.ts

import {Injectable} from "@angular/core";

@Injectable()
export class MyParentClass {
    //...
}
export module a {
    @Injectable()
    export class MyChildClass {
        //...
    }
}

страниц / дома /home.ts

import { Component } from '@angular/core';
import { MyParentClass, MyChildClass } from '../../providers/my-provider'
@Component({
    selector: 'page-home',
    templateUrl: 'home.html',
    providers: [
        MyParentClass,
        MyChildClass
    ]
});
export class homePage {
    constructor(private parentClass: MyParentClass, private childClass: MyChildClass) {
    }

}
Другие вопросы по тегам