Класс обмена в модуле angular - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы иметь в классе общего модуля, который я могу импортировать в другие модули. Примерно так:

import { SomeClass } from '/path/to/shared/module'

Я хочу избежать прямого импорта классов, таких как

import { SomeClass } from '/path/to/class'

По сути, я хочу что-то вроде импорта из пакетов в Java или из пространства имен в c#. Я могу найти только , используя компоненты, службы или директивы, из общих модулей, но без классов. Я знаю, что могу использовать ствольные файлы, но это кажется лучшим решением для моих нужд

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Использовать псевдонимы путей

структура папок:

src
└── shared
    ├── module1
    │   ├── index.ts
    │   └── module1.module.ts
    └── module2
        ├── index.ts
        └── module2.module.ts

src / shared / module1 / index.ts

export * from './module1.module.ts'

src / shared / module2 / index.ts

export * from './module2.module.ts'

добавить псевдоним в tsconfig. json:

{
  "compilerOptions": {
    ...
    "paths": {
      "@shared/*": ["src/app/shared/*"],
    }
  }
}

и вот как вы его используете:

import { Module1 } from '@shared/module1';
0 голосов
/ 04 мая 2020

Это тот же шаблон, что и при работе с компонентом, службой, директивой и т. Д. c ...

Найдите хороший дом для любых общих классов в вашем приложении.

Ваш общий класс:

export class SomeClass {
    ...
}

В любом месте, где вы хотите использовать свой класс общего доступа:

import { SomeClass } './path/to/shared/class';

Посмотрите на некоторые примеры в MDN:

https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export

https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/import

Однако, если вы пытаетесь сделать это супер "angularized", вы можете посмотреть на используя библиотеку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...