typescript - Angular 7.x - Kan inte exportera klass från ett anpassat bibliotek


Jag kan inte exportera en klass från ett anpassat bibliotek och importera den korrekt i appen. Användning som typ fungerar, men användning med konstruktorn fungerar inte.

Mitt bibliotek fungerar... Jag kan använda modulerna, komponenterna, servicen som skapats från. Om jag bara lägger till en enkel exporterad klass, kan jag inte använda den korrekt i appen.

FEL i ./src/app/demo/demo.component.ts Modul hittades inte: Fel: Kan inte lösa 'mylib/lib/global/module1/testClass.class'

detta händer om jag använder i min komponent klassen med konstruktor...

projekt/mylib/src/lib/global/module1/testClass.class.ts

export class DemoClass {
    text: string;

    constructor(text:string) {
        this.text = text
    }
}

Biblioteket är korrekt kompilerat utan fel. I dist

export declare class DemoClass {
    text: string;
    constructor(text: string);
}

public_api.ts

export * from './lib/global/module1/testClass.class';

i ./src/app/demo/demo.component.ts

import { DemoClass } from 'mylib/lib/global/module1/testClass.class';

@Component({
    selector: 'app-demo',
    templateUrl: './demo.component.html',
    styleUrls: ['./demo.component.scss']
})

export class DemoComponent implements OnInit {

    // This will work
    demo: DemoClass = { text: "lorem ipsum" }

    // This will not work and provide error 'Module not found: Error: Can't resolve '
    demo2: DemoClass = new DemoClass('lorem ipsum')

    constructor() { }

    ngOnInit() {

    }
}

redigera något sannolikt relaterat är att om jag importerar min klass som

{ testClass } from projects/mylib/src/lib/global/module1/testClass.class';

Då fungerar det. Men det är inte det rätta sättet att använda ett eget bibliotek.

Jag förväntar mig att kunna använda en klass i appen som i biblioteket.

Svar #1

Du måste utöka men försöka aldrig med ett externt bibliotek men det borde fungera :)

Prova detta

export class DemoComponent extends DemoClass implements OnInit {
  ... 
  constructor(text: string) {
     super(text); // DemoClass constructor params
  }
  ...
}

Jag ser också att din import är konstig. Prova det så här

import { DemoClass } from 'mylib/lib/global/module1/testClass';