2017-06-30 13 views
2

他のコンポーネントのメソッドを使用しようとしましたが、xxComponentのNo providerのようなエラーが発生しました。 どうすればいいですか?コンポーネントの呼び出し方法角2/4

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()を呼び出すにはどうすればよいですか?

あなたのコンポーネント内で使用されるプロバイダにあなたのサービスを追加する必要があり

答えて

2

ケース1のために、以下に示すよう

import {FolderCreateComponent} from 'path/to/component'; 

export class FolderEditComponent implements OnInit { 

    constructor(private folderCreate: FolderCreateComponent) { 
    } 

    foo() { this.folderCreate.saveFolder(); } 
} 
+0

を使用すると思います.plnlr:https://plnkr.co/edit/c6lXPtyNFsCcPk0zyPnF?p = preview ..と私は解決できません。 – user1814879

+0

https://plnkr.co/edit/8HauRImuUsrWsizIcrM6?p=preview 更新されたplunkerをご覧ください。あなたが助ける準備ができている問題があれば –

+0

Yesssそれは大丈夫です.. Thxxx so muchhh – user1814879

1

:また

@Component({ 
    selector: 'app-folder-create', 
    templateUrl: './folder-create.component.html', 
    providers: [FoldersService] 
}) 

あなたはまた、別の内部コンポーネントを使用するためにはimport {FooComponent} from '/path/to/foo.component';でコンポーネントをインポートする必要があります。

編集: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() { 

    } 
} 
+0

はいを​​使用するが、私は、コンポーネントのメソッドsaveFolderを使用する 'FolderEditComponent' ..サービスではありません – user1814879

+0

私の2番目のアドバイスに従ってください。 – pzaenger

+0

はい私はそれをしますが、同じエラー..どのように彼は働いているのかわかりません。 – user1814879

1

は、プロバイダを追加 - あなたは子コンポーネントのメソッドにアクセスしたいときは、親コンポーネントに -

@ViewChild(ChildComponent) childComponent: ChildComponent; 

childComponent.methodName(); 

ケース2 - 子供から親メソッドにアクセスしたい場合 -

コンストラクタ(@Inject(forwardRef(()=> parentComponentに))プライベート_parent:parentComponentに){}

だけthis._parent.methodName()

+0

はい、コンポーネント 'FolderEditComponent'にsaveFolderメソッドを使用したいのですが、 ..サービスではありません – user1814879

+0

@ user1814879上記のように 'FolderCreateComponent'に 'FolderService'プロバイダを追加してもう一度チェックしてください。 –

+0

はいコンポーネントメソッドでアクセスできない場合は、サービス – user1814879

関連する問題