Можно ли наследовать одноэлементный класс в машинописи? - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно унаследовать синглтон-класс и переопределить его метод.это возможно в машинописи?или любой другой способ реализовать этот тип сценария в машинописи.

// Родительский класс

export class SFSCommands {
    static instance: SFSCommands;
    protected constructor() {
        if (SFSCommands.instance) {
            return SFSCommands.instance;
        }

        setInterval(() => {
            this.initSfsCommands('sss');
        }, 2000);
    }

    static getInstance() {
        if (!SFSCommands.instance) {
            SFSCommands.instance = new SFSCommands();
        }
        return SFSCommands.instance;
    }

    initSfsCommands(e: any) {
        console.log('comming in service');
    }
}

// **** Детский класс ***********

import { SFSCommands } from '../utility/sfscommands';

export abstract class GameModel extends SFSCommands {
    roomName: string;

    constructor() {
        super();
        console.log(this);
    }

    // called from child whien game component inisilized

    initSfsCommands(event: any) {
        console.log('game model');
    }

}

Я звоню SFSCommands.getInstance () из моего app.component.ts file

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Это нехорошо, но возможно

export class GameModel extends SFSCommands {
  static getInstance() {
    super.getInstance().initSfsCommands = (event: any) => {
      console.log('game model');
    }
    return GameModel.instance;
  }
}

, и вы должны позвонить GameModel.getInstance() вместо SFSCommands.getInstance()

Надеюсь, эта помощь

0 голосов
/ 15 февраля 2019

Угловой инъекционный / сервисный класс является одноэлементным.

@Injectable({providedIn: 'root'})
export class GlobalService {}

Он будет создан при первом введении его в компонент.

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