Angular: Как импортировать глобальный модуль, чтобы все другие модули имели к нему доступ.(без повторного импорта в другие модули) - PullRequest
0 голосов
/ 15 февраля 2019

Я хочу использовать UI-Framework глобально для всех других модулей (подмодулей от маршрутизации).

Я использую последние версии Angular и Material (7.2+).https://material.angular.io/

Я создал модуль Angular, который импортирует все модули пользовательского интерфейса Angular Material.Импортировано в app.module.ts.Работает нормально, пока я не изменю маршрут, загрузив другой модуль.- Я знаю почему.Потому что каждый модуль - это отдельная область.Но должна быть возможность импортировать модуль глобально, чтобы каждый компонент имел доступ к пользовательскому интерфейсу (html).

Я хочу импортировать все Mat..Modules в app.module.ts (уже сделано), доступные также для моего другоготакие модули, как DashboardModule.В настоящее время я должен снова импортировать MaterialModules в каждый компонент модуля (страницу).Я уверен / надеюсь, что это возможно.Потому что интерфейс должен быть доступен глобально для всей страницы.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Это не так, как работают угловые модули.

ПРИМЕЧАНИЕ: этот подход не работает, обновит ответ, если найдет какое-то решение

Но есть обходной путь,Создайте свой собственный Декоратор, чтобы обернуть NgModule декоратор и использовать его при объявлении другого модуля.

Вот пример:

function CustomeNgModule(options: NgModule){
    options.imports = options.imports || []; 
    options.imports.push(SharedModule);
    return NgModule(options);
}

и используйте его как

@CustomeNgModule({/*options*/})
export class AbcModule {
}

Я не проверял свой код, но он должен работать, дайте мне знать, если это не так.

Если вам нужна дополнительная информация о Decorates https://www.typescriptlang.org/docs/handbook/decorators.html

0 голосов
/ 16 февраля 2019

Я думаю, что хотеть невозможно.Весь смысл модулей состоит в том, чтобы инкапсулировать их контент и предоставлять только конкретный контент через экспорт.С другой стороны, если вы хотите использовать что-то, экспортированное другим модулем, вы должны импортировать его.Глобального импорта не существует

...