Добавить функцию в класс - PullRequest
2 голосов
/ 16 июня 2020

У меня есть базовое приложение, которое я устанавливаю для разных клиентов и к которому я добавляю функции, которые они запрашивают.

Допустим, один базовый компонент имеет

component-base.html
component-base.ts

Теперь клиент просит меня настроить его, и я дублирую эти два файла:

client-base-component1.html
client-base-component1.ts

и в angualar.jons я говорю ему

          "fileReplacements": [
            {
              "replace": "src / components / component-base.html",
              "with": "src / components / component-base-client1.html"
            },
            {
              "replace": "src / components / component-base.ts",
              "with": "src / components / component-base-client1.ts"
            },

, а затем добавляю туда функциональность, но так как клиентов много, в конце концов, я дублирую много кода.

В html я полагаю, что это невозможно, но есть ли возможность вместо того, чтобы дублировать все функции в компоненте -base-client1.ts, импортируйте весь код и просто вставьте новые новые функции, которые я разрабатываю (и что будет использоваться только component-base-client1. html), или, что еще лучше, чтобы иметь возможность для перезаписи функций из component-base.ts функциями из component-base-client1.ts, а в случае, если их нет в component-base-client1.ts, используются компонент-base.ts?

Я к сейчас сложно объяснить здесь, что я ищу, но было бы очень полезно лучше организовать мои файлы.

Спасибо

1 Ответ

1 голос
/ 16 июня 2020

Вам необходимо использовать наследование классов.

// Your base component
export class BaseComponent 
    public Function1(): void {
    }
}

// Your client component extending you BaseComponent (this is the inheritance)
export ClientComponent extends BaseComponent {

    // You can override BaseComponent Function1()
    public Function1(): void {
        // You can still call base Function1 on your overrided Function1
        super.Function1();
    }

    // You can add client specific functions
    public ClientSpecificFunction(): void {
    }
}

Если ваш BaseComponent внедряет службы, вы должны внедрить их в конструктор наследующего класса:

export class BaseComponent 

    // Your base component constructor
    constructor(public router: Router) {
    }
}

export ClientComponent extends BaseComponent {

    constructor(public router: Router) {
        super(router);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...