Я хотел бы знать, как я могу успешно передать данные моей службы требуемому компоненту, который находится в другом каталоге.
Составная часть
import {Component, Inject, OnInit} from '@angular/core';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
@Component({
selector: 'app-add-view-modal',
templateUrl: './add-view.component.html',
styleUrls: ['./add-view.component.css']
})
export class AddViewComponent implements OnInit {
constructor(public dialogRef: MatDialogRef<AddViewComponent>,
@Inject(MAT_DIALOG_DATA) data) {}
ngOnInit() {
}
}
Как бы я этого добился? Нужно ли указывать службу в качестве поставщика в определении @Component?
Вы установили createdIn для службы на корневом уровне. Таким образом, вам не нужно передавать службу в массиве компонентов поставщиков (если вы не хотите, чтобы был введен новый экземпляр службы)
Я думаю, вам следует еще раз прочитать документы: angular.io/guide/injection-injection
Вы можете просто использовать автоматическое внедрение зависимостей Angular:
import {ViewManagerService} from 'path/to/view-manager.service.ts';
import {Component, Inject, OnInit} from '@angular/core';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
@Component({ selector: 'app-add-view-modal', templateUrl: './add-view.component.html', styleUrls: ['./add-view.component.css'] })
export class AddViewComponent implements OnInit {
constructor(
private viewManagerService: ViewManagerService,
public dialogRef: MatDialogRef<AddViewComponent>,
@Inject(MAT_DIALOG_DATA) data
) {
}
ngOnInit() {
this.viewManagerService.doSomething();
}
}
Сначала добавьте свой сервис к провайдеру в файле app module.ts.
Затем добавьте службу в конструктор, как показано ниже.
import {Component, Inject, OnInit} from '@angular/core';
import {serviceClassName} from '../service/serviceClassName';
@Component({
selector: 'app-add-view-modal',
templateUrl: './add-view.component.html',
styleUrls: ['./add-view.component.css']
})
export class AddViewComponent implements OnInit {
constructor(public serviceName: serviceClassName) {}
ngOnInit() {}
Используйте необходимую функциональность или переменную, объявленную в сервисе, как показано ниже.
this.serviceName.finctionName();
внедрить ViewManagerService через конструктор вашего компонента