2017-12-18 82 views
0

这里其他组分结果是我的代码部分:进样部件成在单

@Component({ 
    selector: '...', 
    templateUrl: " " 
}) 
export class QuoteComponent { 
    address: boolean[] = [false, false]; 

    constructor() { } 
    ... 
} 


import { QuoteComponent } from "..."; 
@Component({ 
    selector: '...', 
    templateUrl: "...", 
}) 
export class Addresses1Component { 
    constructor(private quote: QuoteComponent) { } 
} 


import { QuoteComponent } from "..."; 
    @Component({ 
     selector: '...', 
     templateUrl: "...", 
    }) 
    export class Addresses2Component { 
     constructor(private quote: QuoteComponent) { } 
    }  

与上面的代码和而不定义提供商任何地方,QuoteComponent是独立的,并Addresses1Component, Addresses2Component有权访问这一点。我期望表现得像服务而不是一个单身人士,因为我没有在providers数组内定义它。对此有什么好的解释?

+0

您正在构造函数中注入一个组件。我很好奇为什么这个编译。但既然它,我会说QuoteComponent被用作全局变量,而不是一个角度组件或服务。但我只是在这里猜测。你能否提供一些解释你为什么不创建服务? – Ore

+0

此组件(QuoteComponent)创建一个跨越其他两个地址组件的表单。这就是为什么我要注入它,以获得它的属性和价值。 –

回答

0

组件预计不可注射。使用反应型Forms API创建包含表单模板的共享组件。

如果您QuoteComponent创建,应该在其他组件可用(表单数据)形式,创建将有模仿表单模型的属性类型的变量myFormData的服务。另外,在此服务中创建setter和getter:set formData()get formData()。应该将此服务注入到QuoteComponent,Addresses1Component和Addresses2Component中。

创建表单时,调用服务上的setter。在您的地址组件中,调用getter并使用方法setValue来使用服务中的数据填充表单,例如:

this.myFormModel.setValue(myService.formData);