TS1086: Akcesorium nie można zadeklarować w kontekście otoczenia

13

Mam tysiące tego błędu po początkowej implementacji i wpisaniu w terminalu ng obsługiwać mojej aplikacji i nie mogę go rozwiązać. To pierwszy raz, kiedy mam taki problem wewnątrz kątowy z błędami maszynopisu wygląda następująco:

BŁĄD w ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:24:19 - błąd TS1086: Nie można zadeklarować akcesorium w kontekście otoczenia.

24     protected get parentElement(): HTMLElement | null;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19

- błąd TS1086: Akcesorium nie można zadeklarować w kontekście otoczenia.

26     protected get nativeElement(): HTMLElement;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9

- błąd TS1086: Akcesorium nie można zadeklarować w kontekście otoczenia.

28     get activatedValue(): string;
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9

- błąd TS1086: Akcesorium nie można zadeklarować w kontekście otoczenia.

29     set activatedValue(value: string);
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9

- błąd TS1086: Akcesorium nie można zadeklarować w kontekście otoczenia. [...]

Czy ktoś zna powód? Nie mogę przetestować aplikacji, dopóki jej nie naprawię.

Aktualizacja 1

Dobra, robię to do przodu. Większość błędów zniknęła, ale mam ich teraz kilka, na przykład pierwszy:

BŁĄD w src / app / main / main.component.ts: 143: 63 - błąd TS2322: Wpisz ciąg znaków | undefined ”nie można przypisać„ string ”. Wpisz „undefined” nie można przypisać do „string”.

143 this.fileService.add ({isFolder: true, name: folder.name, parent: this.currentRoot? This.currentRoot.id: 'root'});

Kod wygląda następująco:

main.component.ts:

currentRoot: MpFileElement = new MpFileElement();
...
    addFolder(folder: { name: string }) {
        this.fileService.add({ isFolder: true, name: folder.name, parent: 
    this.currentRoot ? this.currentRoot.id : 'root' });
        this.updateFileElementQuery();
    }
...

plik.service.ts:

import { Injectable } from '@angular/core';

import { v4 } from 'uuid';
import { MpFileElement } from '../models/mp-file-element.model';
import { Observable } from 'rxjs/internal/Observable';
import { BehaviorSubject } from 'rxjs';

export interface IFileService {
    add(fileElement: MpFileElement);
    delete(id: string);
    update(id: string, update: Partial<MpFileElement>);
    queryInFolder(folderId: string): Observable<MpFileElement[]>;
    get(id: string): MpFileElement;
}

@Injectable()
export class MpFileService implements IFileService {

    constructor() {}
    private map = new Map<string, MpFileElement>()

    private querySubject: BehaviorSubject<MpFileElement[]>;

    add(fileElement: MpFileElement) {
        fileElement.id = v4();
        this.map.set(fileElement.id, this.clone(fileElement));
        return fileElement;
    }

    delete(id: string) {
        this.map.delete(id);
    }

    update(id: string, update: Partial<MpFileElement>) {
        let element = this.map.get(id);
        element = Object.assign(element, update);
        this.map.set(element.id, element);
    }
    queryInFolder(folderId: string) {
        const result: MpFileElement[] = [];
        this.map.forEach(element => {
            if (element.parent === folderId) {
                result.push(this.clone(element));
            }
        })
        if (!this.querySubject) {
            this.querySubject = new BehaviorSubject(result);
        } else {
            this.querySubject.next(result);
        }
        return this.querySubject.asObservable();
    }

    get(id: string) {
        return this.map.get(id);
    }

    clone(element: MpFileElement) {
        return JSON.parse(JSON.stringify(element));
    }
}
xavn-mpt
źródło
1
Przeczytałbym to - github.com/microsoft/TypeScript/issues/33939 .
Sam
@Sam Przeczytałem to i nic nie pomaga - niestety
xavn-mpt
1
Czy używasz wersji 9.0.0-beta.28@ angular / flex-layout? Spróbuję przywrócić poprzednią wersję, zanim zderzą się z wersją TS.
Sam
@Sam zmieniłem w pakiet.json na starszą wersję i nadal mam ten sam problem po usunięciu modułów node_module, package-lock.json i ponownej instalacji wszystkiego.
xavn-mpt
@Sam w tej chwili to 8.0.0-beta.27
xavn-mpt

Odpowiedzi:

16

Miałem ten sam problem i te 2 polecenia uratowały mi życie. Moim podstawowym problemem jest to, że zawsze mam problemy z instalacją globalną i instalacją lokalną. Być może masz podobny problem i mam nadzieję, że uruchomienie tych poleceń również rozwiąże problem.

ng update --next @angular/cli --force
npm install typescript@latest
Leon Grin
źródło
To działało dobrze dla mnie.
to jest yash
2
to działa dla mnie. ale muszę obniżyć wersję maszynopisu do wersji 3.6.x. powyżej 3.8.0 nie działa i generuje błąd.
Hardik Patel
11

Ustawienie "skipLibCheck": truew tsconfig.jsonrozwiązać mój problem

"compilerOptions": {
    "skipLibCheck": true
}
VRK
źródło
1
To również zadziałało dla mnie i myślę, że jest w porządku dla POC lub przykładowego projektu, ale inny wątek omawia potencjalne wady robienia tego ogólnie: stackoverflow.com/questions/52311779/...
ewomack
to jest dla mnie praca, po wielu próbach w końcu zacząłem swój metronicowy projekt demo. Dzięki!
JMSamudio
7

Mam ten sam problem, gdy dodałem teraz @ angular / flex-layout do mojego projektu Angular 8 z

`npm install @angular/flex-layout --save`.

Od tego czasu to polecenie zainstalowało główną 9. wersję pakietu flex-layout. Zamiast uaktualniać wszystko inne do ostatniej wersji, rozwiązałem to, instalując zamiast tego ostatnią 8. główną wersję pakietu .

 npm install @angular/flex-layout@8.0.0-beta.27 --save
Atle
źródło
2

Wygląda na to, że niedawno zainstalowałeś pakiet flex-layout. Spróbuj usunąć ten folder pakietu z folderu node_modules i ponownie zainstalować poprzednią wersję tego pakietu.

Niedawno (2 dni przed bieżącą datą) firma angular wydała najnowszą wersję angular-cli (v9.0.1), dzięki czemu wiele pakietów jest aktualizowanych w celu obsługi najnowszej wersji cli. W twoim przypadku możesz mieć starą wersję cli, a kiedy zainstalowałeś ten pakiet, domyślnie został pobrany do najnowszej wersji cli. Spróbuj obniżyć wersję pakietu. Pracował dla mnie przynajmniej.

Nie zapomnij również obniżyć wersji pakietu do pliku package.json

Hassan Raza
źródło
2

próbować

ng update @angular/core @angular/cli

Następnie, aby zsynchronizować materiał, uruchom:

ng update @angular/material
Mohammed Raja
źródło
2

W moim przypadku zmiana wersji @ angular / animations zadziałała, jeśli możesz sobie na to pozwolić, uruchom polecenie

npm i @angular/animations@6.1.10

Lub skorzystaj z innej wersji, która może Ci odpowiadać na karcie Wersje tutaj: https://www.npmjs.com/package/@angular/animations

Claudio Teles
źródło
2

Szybkie rozwiązanie: zaktualizuj pakiet.json

"devDependencies": {
   ...
   "typescript": "~3.7.4",
 }

W tsconfig.json

{
    ...,
    "angularCompilerOptions": {
       ...,
       "disableTypeScriptVersionCheck": true
    }
}

następnie usuń folder node_modules i zainstaluj ponownie za pomocą

instalacja npm

Więcej informacji tutaj

Daniel R.
źródło
0

to krótka odpowiedź, którą mam nadzieję pomóc

Spróbuj obniżyć interfejs Agular i Angular-CLI do wersji 8, myślę, że twój problem jest związany ze zgodnością pakietów

AbuDawood
źródło
0

Myślę, że problem pojawił się w wyniku niedopasowania maszynopisu i wersji modułu. Ten problem jest bardzo podobny do twojego pytania, a odpowiedzi są bardzo satysfakcjonujące.

Biały Kieł
źródło