Reputation: 984
I tried to use a method of a component in an other but I get error like No provider for xxComponent . How can I do it ?
import { FoldersService } from '../../_services/folders.service';
import { Component, OnInit, ViewChild } from '@angular/core';
@Component({
selector: 'app-folder-create',
templateUrl: './folder-create.component.html',
})
export class FolderCreateComponent implements OnInit {
constructor(
private http: Http,
private folderService: FoldersService,
) { }
ngOnInit() { }
saveFolder() {
}
}
-- Class FolderEditComponent
import { FolderCreateComponent } from '../folder-create/folder-create.component';
@Component({
selector: 'app-folder-edit',
templateUrl: './folder-edit.component.html',
styleUrls: ['./folder-edit.component.css'],
})
export class FolderEditComponent implements OnInit {
constructor(
private http: Http,
private folderService: FoldersService,
private folderCreate: FolderCreateComponent
) { }
ngOnInit() { }
// How can I do here for calling method saveFolder() of the component FolderCreateComponent
// I try this :
folderCreate.saveFolder(); // But I got error : ERROR Error: Uncaught (in promise): Error: No provider for FolderCreateComponent!
}
How can I do for calling method saveFolder() of the component FolderCreateComponent in the component FolderEditComponent ?
Upvotes: 2
Views: 538
Reputation: 341
case 1 - when you want to access method of child component, then in parent component -
@ViewChild(ChildComponent) childComponent: ChildComponent;
childComponent.methodName();
case 2 - when you want access parent method from child -
constructor(@Inject(forwardRef(() => ParentComponent)) private _parent: ParentComponent){}
just use this._parent.methodName()
Upvotes: 2
Reputation: 11973
You need to add your service to the used providers within your component:
@Component({
selector: 'app-folder-create',
templateUrl: './folder-create.component.html',
providers: [FoldersService]
})
In addition you also need to import the component with import {FooComponent} from '/path/to/foo.component';
in order to use a component inside another one.
Edit:
import {FolderCreateComponent} from 'path/to/component';
export class FolderEditComponent implements OnInit {
constructor(private folderCreate: FolderCreateComponent) {
}
foo() { this.folderCreate.saveFolder(); }
}
Upvotes: 1
Reputation: 1658
Add Providers as shown below for FolderCreateComponent
import { FoldersService } from '../../_services/folders.service';
import { Component, OnInit, ViewChild } from '@angular/core';
import { Http, Response } from '@angular/http';
@Component({
selector: 'app-folder-create',
templateUrl: './folder-create.component.html',
providers: [FoldersService]
})
export class FolderCreateComponent implements OnInit {
constructor(
private http: Http,
private folderService: FoldersService,
) { }
ngOnInit() { }
saveFolder() {
}
}
Upvotes: 1