Javascript 如何在Angularjs中重写组件

Javascript 如何在Angularjs中重写组件,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我想覆盖自定义模块中的一个现有组件 这是组件- import {SeComponent, TypedMap} from "smarteditcommons"; import { GenericEditorField, GenericEditorSanitizationService, IGenericEditor, SeRichTextFieldLocalizationService, SeRichTextLoaderService } from "smartedi

我想覆盖自定义模块中的一个现有组件

这是组件-

import {SeComponent, TypedMap} from "smarteditcommons";
import {
GenericEditorField,
GenericEditorSanitizationService, IGenericEditor, SeRichTextFieldLocalizationService,
SeRichTextLoaderService
} from "smarteditcommons/components/genericEditor";
import "ckeditor";

@SeComponent({
templateUrl: 'seRichTextFieldComponentTemplate.html',
inputs: [
    'field:=',
    'qualifier:=',
    'model:=',
    'editor:=',
    'isDisabled'
]
})
export class SeRichTextFieldComponent {

public field: GenericEditorField;
public qualifier: string;
public model: TypedMap<any>;
public editor: IGenericEditor;

private mode: string;
private editorInstance: CKEDITOR.editor;

constructor(
    private seRichTextLoaderService: SeRichTextLoaderService,
    private seRichTextConfiguration: any,
    private genericEditorSanitizationService: GenericEditorSanitizationService,
    private seRichTextFieldLocalizationService: SeRichTextFieldLocalizationService,
    private $scope: angular.IScope,
    private $element: angular.IAugmentedJQuery
) {
    this.seRichTextLoaderService.load().then(() => {
        const textAreaElement = this.$element.find('textarea')[0] as HTMLTextAreaElement;
        this.editorInstance = CKEDITOR.replace(textAreaElement, this.seRichTextConfiguration);

        this.seRichTextFieldLocalizationService.localizeCKEditor();

        this.$element.bind('$destroy', () => {
            if (this.editorInstance && CKEDITOR.instances[this.editorInstance.name]) {
                CKEDITOR.instances[this.editorInstance.name].destroy();
            }
        });

        this.editorInstance.on('change', this.onChange.bind(this));
        this.editorInstance.on('mode', this.onMode.bind(this));
        CKEDITOR.on('instanceReady', this.onInstanceReady.bind(this));
    });
}
}

但它不起作用。正确的方法是什么?

如果您希望您的组件在另一个模块中具有不同的行为,正确的方法是向该模块注入具有不同值的服务。然后从组件中读取值并决定要执行的操作

为您服务:

@Injectable()
export class MyService {
 type;

 constructor(type){
  this.type = type;
 }
}
在您的模块中(每个模块在构造函数中具有不同的值):

最后,在您的组件中:

contructor(private service: MyService){
 if(service.type == 1){
  // do a different thing
 }
}

花些时间提供最少的示例,而不仅仅是复制粘贴大量code@PetrAveryanov我只是想在angularJs中找到一种覆盖组件的方法。这是有角度的,不是AngularJS@JerMah:好的。你能帮我重写组件构造函数吗?添加了更多信息
@Injectable()
export class MyService {
 type;

 constructor(type){
  this.type = type;
 }
}
  providers: [
    { provide: MyService , useValue: new MyService(1)},
contructor(private service: MyService){
 if(service.type == 1){
  // do a different thing
 }
}