我试图在另一个组件中使用组件的方法,但得到了错误,如No provider for xxComponent。我该怎么做呢?
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!
}
如何在组件FolderEditComponent中调用组件FolderCreateComponent的方法saveFolder()?
发布于 2017-06-30 20:30:10
情况1-当你想访问子组件的方法时,那么在父组件中-
@ViewChild(ChildComponent) childComponent: ChildComponent;
childComponent.methodName();
案例2-当你想从子方法访问父方法时-
构造函数(@Inject(forwardRef(()) => ParentComponent))私有_parent: ParentComponent){}
只需使用this._parent.methodName()
即可
发布于 2017-06-30 20:12:08
您需要将您的服务添加到组件中使用的提供者:
@Component({
selector: 'app-folder-create',
templateUrl: './folder-create.component.html',
providers: [FoldersService]
})
此外,您还需要使用import {FooComponent} from '/path/to/foo.component';
导入组件,以便在另一个组件中使用另一个组件。
编辑:
import {FolderCreateComponent} from 'path/to/component';
export class FolderEditComponent implements OnInit {
constructor(private folderCreate: FolderCreateComponent) {
}
foo() { this.folderCreate.saveFolder(); }
}
发布于 2017-06-30 20:17:55
为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() {
}
}
https://stackoverflow.com/questions/44846188
复制相似问题