Angular 角度2-在抽象(父)组件中定义输入

Angular 角度2-在抽象(父)组件中定义输入,angular,Angular,我们在新的Angular 2应用程序中使用自定义组件,最近希望提取父组件中的某些部分,然后将其从子组件扩展。但是@Input()属性有一些问题 当我们在父组件中定义它们的输入时,应用程序与“ng serve”(在开发模式下)一样工作。但当我们使用“ng build--prod”构建应用程序时,编译器会抱怨这些输入(本例中的标签是我们的输入),就好像它们不是子组件声明的一部分一样。看起来是这样的: <jb-input class="col-md-6" name="name

我们在新的Angular 2应用程序中使用自定义组件,最近希望提取父组件中的某些部分,然后将其从子组件扩展。但是@Input()属性有一些问题

当我们在父组件中定义它们的输入时,应用程序与“ng serve”(在开发模式下)一样工作。但当我们使用“ng build--prod”构建应用程序时,编译器会抱怨这些输入(本例中的标签是我们的输入),就好像它们不是子组件声明的一部分一样。看起来是这样的:

<jb-input class="col-md-6"
          name="name"
          [label]="'surname'"
          ngModel
          required>
</jb-input>
母体组分减容:

export class JbInputComponent extends JbFormBasicComponent implements OnInit {

  ...
@Injectable()
export default abstract class JbFormBasicComponent implements ControlValueAccessor {

  @Input() label: string;
  ...
当我们还在子组件中定义输入时,它就起作用了。但是,有没有更好的方法来实现这一点,而不必定义我们在这两个地方的投入

  • 在这里,我们的父子关系只是在组件类级别。父级不需要有自己的选择器/模板
更新:

我们还可以在儿童成分减容中定义这些输入。因此:

@Component({
  moduleId: module.id,
  selector: '..',
  templateUrl: '..',
  inputs: ['label', ..]
})
export class JbInputComponent extends JbFormBasicComponent implements OnInit {
..
另一个选项是:将父级也定义为组件:

@Component({
  moduleId: module.id,
  template: ''
})
export class JbFormBasicComponent implements ControlValueAccessor {
..
因此,输入和输出字段对于子项是可见的,而无需在每个子项中再次定义它们。但现在这个组件也必须在app.module中声明,因为它现在也是一个组件。这样,父对象不需要@Injectable注释


但是我们仍然不知道该走哪条路。。Angular文档也像一个笑话。

我对Angular cli不太了解。但这只是一个提示:当某些东西在开发中起作用而在生产中不起作用时,这是因为一些生产插件把代码弄乱了。顺便说一句,我觉得有点奇怪,你用@injectables来装饰一个抽象组件。我们也想到了那些插件(minifier等)。其他事情:没有@injectable根本不起作用。。我也不知道为什么。。这是我们在控制台中看到的错误:无法解析“ourChildComponent”的所有参数:(?)。您可以尝试使用与生产相同的插件运行开发。。。构建可能需要更长的时间,但很可能您会发现它不起作用。。。然后开始一个接一个地移除插件,直到你发现是哪个插件把事情搞砸了。关于可注入性,它是一个装饰器,仅用于将类标记为可用于DI;这对于一个组件来说没有多大意义,对于一个抽象类来说就更没有意义了。但我可能遗漏了什么。我对这件事不太清楚。但这只是一个提示:当某些东西在开发中起作用而在生产中不起作用时,这是因为一些生产插件把代码弄乱了。顺便说一句,我觉得有点奇怪,你用@injectables来装饰一个抽象组件。我们也想到了那些插件(minifier等)。其他事情:没有@injectable根本不起作用。。我也不知道为什么。。这是我们在控制台中看到的错误:无法解析“ourChildComponent”的所有参数:(?)。您可以尝试使用与生产相同的插件运行开发。。。构建可能需要更长的时间,但很可能您会发现它不起作用。。。然后开始一个接一个地移除插件,直到你发现是哪个插件把事情搞砸了。关于可注入性,它是一个装饰器,仅用于将类标记为可用于DI;这对于一个组件来说没有多大意义,对于一个抽象类来说就更没有意义了。但我可能错过了什么。