首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组件Angular 2/4的调用方法

组件Angular 2/4的调用方法
EN

Stack Overflow用户
提问于 2017-06-30 20:09:27
回答 3查看 506关注 0票数 2

我试图在另一个组件中使用组件的方法,但得到了错误,如No provider for xxComponent。我该怎么做呢?

代码语言:javascript
运行
复制
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()?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-30 20:30:10

情况1-当你想访问子组件的方法时,那么在父组件中-

代码语言:javascript
运行
复制
@ViewChild(ChildComponent) childComponent: ChildComponent;

childComponent.methodName();

案例2-当你想从子方法访问父方法时-

构造函数(@Inject(forwardRef(()) => ParentComponent))私有_parent: ParentComponent){}

只需使用this._parent.methodName()即可

票数 2
EN

Stack Overflow用户

发布于 2017-06-30 20:12:08

您需要将您的服务添加到组件中使用的提供者:

代码语言:javascript
运行
复制
@Component({
  selector: 'app-folder-create',
  templateUrl: './folder-create.component.html',
  providers: [FoldersService]
})

此外,您还需要使用import {FooComponent} from '/path/to/foo.component';导入组件,以便在另一个组件中使用另一个组件。

编辑:

代码语言:javascript
运行
复制
import {FolderCreateComponent} from 'path/to/component';

export class FolderEditComponent implements OnInit {

   constructor(private folderCreate: FolderCreateComponent) {
   }

   foo() { this.folderCreate.saveFolder(); }
}
票数 1
EN

Stack Overflow用户

发布于 2017-06-30 20:17:55

FolderCreateComponent添加如下所示的提供程序

代码语言:javascript
运行
复制
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() {

  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44846188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档