РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsPmMdFS 53 of 168 menu
◀ ▶

Сервис другого модуля в Nest

Пусть страница собрана в одном модуле, а строка для неё готовится в другом. Свой список providers этой странице не поможет: нужного класса там нет.

Сервис открывают в его модуле через exports. Модуль страницы импортирует модуль сервиса и принимает объект в конструкторе. В свои providers этот класс не записывают: объект приходит из импортированного модуля.

Покажем на примере постов и автора. Сервис автора отдаёт имя:

import { Injectable } from '@nestjs/common'; @Injectable() export class AuthorService { getName(): string { return 'Editor'; } }

Модуль автора открывает этот сервис:

import { Module } from '@nestjs/common'; import { AuthorService } from './author.service.js'; @Module({ providers: [AuthorService], exports: [AuthorService], }) export class AuthorModule {}

Контроллер постов принимает сервис автора и собирает из него ответ. Импорт класса в файле называет тип:

import { Controller, Get } from '@nestjs/common'; import { AuthorService } from '../author/author.service.js'; @Controller('posts') export class PostController { constructor(private authorService: AuthorService) {} @Get() getPosts(): string { const name = this.authorService.getName(); return 'Morning note by ' + name; } }

Модуль постов импортирует модуль автора. По этой записи Nest и подставляет объект в конструктор:

import { Module } from '@nestjs/common'; import { AuthorModule } from '../author/author.module.js'; import { PostController } from './post.controller.js'; @Module({ imports: [AuthorModule], controllers: [PostController], }) export class PostsModule {}

Корневой модуль подключает модуль постов:

import { Module } from '@nestjs/common'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [PostsModule], }) export class AppModule {}

Сделайте страницу работников в контроллере WorkerController модуля WorkersModule. Строку для страницы возьмите из сервиса DepartmentService модуля DepartmentModule. Модуль работников подключите к корневому.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить