Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2:从父组件调用函数_Javascript_Angular_Typescript_Angular2 Routing - Fatal编程技术网

Javascript Angular2:从父组件调用函数

Javascript Angular2:从父组件调用函数,javascript,angular,typescript,angular2-routing,Javascript,Angular,Typescript,Angular2 Routing,我面临着一个问题,这个问题以前已经提到过,但这些解决方案如下: 我想在共享链接上举一个例子,让它更简单: 让我们开始: 首先,我在app.module.ts中有这些路线: {path: 'dash/:project_id', component: DashProject, children: [ {path: '', component: null}, {path: 'task/form', component: TaskForm}, {path: 'task/:tas

我面临着一个问题,这个问题以前已经提到过,但这些解决方案如下:

我想在共享链接上举一个例子,让它更简单:

让我们开始: 首先,我在app.module.ts中有这些路线:

{path: 'dash/:project_id', component: DashProject, children: [
    {path: '', component: null},
    {path: 'task/form', component: TaskForm},
    {path: 'task/:task_id', component: TaskView}
如您所见,DashProject是我的父母,其他人是孩子。我还在DashProject的模板中包含了所需的

其中一部分包括那里的儿童

但在这个例子中,我需要包括

现在我在我的父模板中这样做:


问题:当我将
添加到父模板时,子组件已经包含到父模板中,即使它没有通过URL路由调用。当我删除该部分时,父-子组件之间的交互不再起作用。 如果我将这些添加到子模板中,我将得到一个永无止境的循环并崩溃

有人能看到我的问题或知道是什么导致了这个错误吗?我在网上看到了一些例子,比如上面的共享例子,它们都使用了类似的解决方案,但对我来说不起作用

提前谢谢


您好,yadbo看起来您可能正在合并两种不同的技术

要布线到零部件时,请使用布线。例如,发送到dash项目页面或任务表单页面。通常路由的组件没有选择器,也不会在HTML中直接引用。相反,它们出现在

如果要将一个组件用作另一个组件的子组件,请使用嵌套组件。例如,在项目页面中显示一组星星而不是评级。嵌套组件必须有一个选择器,该选择器在HTML中使用(如您的
示例)

使用嵌套组件时,可以使用@input和@output在父级和子级之间进行通信


使用路由组件时,您可以通过传递参数(必需、可选或查询参数)、使用共享解析程序或通过在服务中设置属性在组件之间进行通信。

谢谢@DeborahK的提示,这是我丢失的

现在我正在使用一个共享服务来解决这个问题,我正在将一个回调传递给我从子节点调用的共享服务

下面是一个例子,至少是想法,它是如何工作的:

export class SharedService {
    private callback:any = null;

    public constructor() {
    }
    public getCallback() {
        return this.callback;
    }

    public setCallback(call) {
        this.callback = call;
    }
}
家长:

this._shared.setCallback(this.test.bind(this));
儿童:

this._shared.getCallback()();
是的,它是有效的:)