Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular TS1086:无法在环境上下文中声明访问器_Angular_Typescript - Fatal编程技术网

Angular TS1086:无法在环境上下文中声明访问器

Angular TS1086:无法在环境上下文中声明访问器,angular,typescript,Angular,Typescript,在最初的实现后,我有数千个这样的错误,并且在终端ng中键入我的应用程序,我无法解决它。这是我第一次遇到这样的打字问题 错误如下所示: 错误 ../../node_modules/@angular/flex layout/core/typings/base/base2.d.ts:24:19 -错误TS1086:无法在环境上下文中声明访问器 24 protected get parentElement(): HTMLElement | null; ~

在最初的实现后,我有数千个这样的错误,并且在终端ng中键入我的应用程序,我无法解决它。这是我第一次遇到这样的打字问题 错误如下所示:

错误 ../../node_modules/@angular/flex layout/core/typings/base/base2.d.ts:24:19 -错误TS1086:无法在环境上下文中声明访问器

24     protected get parentElement(): HTMLElement | null;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19
26     protected get nativeElement(): HTMLElement;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9
28     get activatedValue(): string;
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9
29     set activatedValue(value: string);
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9
-错误TS1086:无法在环境上下文中声明访问器

24     protected get parentElement(): HTMLElement | null;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19
26     protected get nativeElement(): HTMLElement;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9
28     get activatedValue(): string;
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9
29     set activatedValue(value: string);
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9
-错误TS1086:无法在环境上下文中声明访问器

24     protected get parentElement(): HTMLElement | null;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19
26     protected get nativeElement(): HTMLElement;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9
28     get activatedValue(): string;
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9
29     set activatedValue(value: string);
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9
-错误TS1086:无法在环境上下文中声明访问器

24     protected get parentElement(): HTMLElement | null;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19
26     protected get nativeElement(): HTMLElement;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9
28     get activatedValue(): string;
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9
29     set activatedValue(value: string);
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9
-错误TS1086:无法在环境上下文中声明访问器。
[…]

有人知道原因吗?我无法测试我的应用程序,直到我修复它

更新1 好的,我向前走。大多数错误都消失了,但我现在有几个错误,例如第一个:

src/app/main/main.component.ts:143:63中出错-错误TS2322:Type “字符串|未定义”不可分配给类型“字符串”。类型 “undefined”不能分配给类型“string”

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

代码如下所示:

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();
    }
...
file.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));
    }
}
从'@angular/core'导入{Injectable};
从'uuid'导入{v4};
从“../models/mp file element.model”导入{MpFileElement};
从'rxjs/internal/Observable'导入{Observable};
从“rxjs”导入{BehaviorSubject};
导出接口IFileService{
添加(fileElement:MpFileElement);
删除(id:string);
更新(id:字符串,更新:部分);
queryInFolder(folderId:string):可观察;
get(id:string):MpFileElement;
}
@可注射()
导出类MpFileService实现IFileService{
构造函数(){}
私有映射=新映射()
私有查询主体:行为主体;
添加(fileElement:MpFileElement){
fileElement.id=v4();
this.map.set(fileElement.id,this.clone(fileElement));
返回文件元素;
}
删除(id:string){
此.map.delete(id);
}
更新(id:字符串,更新:部分){
让element=this.map.get(id);
元素=对象。分配(元素,更新);
this.map.set(element.id,element);
}
queryInFolder(folderId:string){
常量结果:MpFileElement[]=[];
this.map.forEach(元素=>{
if(element.parent==folderId){
result.push(this.clone(元素));
}
})
if(!this.querySubject){
this.querySubject=新行为主体(结果);
}否则{
this.querySubject.next(结果);
}
返回此.querySubject.asObservable();
}
获取(id:string){
返回此.map.get(id);
}
克隆(元素:MpFileElement){
返回JSON.parse(JSON.stringify(element));
}
}

我也遇到了同样的问题,这两个命令救了我的命。我的根本问题是我总是搞砸全局安装和本地安装。也许您正面临类似的问题,希望运行这些命令也能解决您的问题

ng update --next @angular/cli --force
npm install typescript@latest

看起来您最近安装了flex布局软件包。请尝试从节点\模块文件夹中删除此程序包文件夹,然后重新安装此程序包的早期版本

最近(当前日期前2天),angular发布了最新的angular cli版本(v9.0.1),因此许多软件包都进行了更新以支持此最新的cli版本。在您的情况下,您可能有旧的cli版本,并且在安装此软件包时,默认情况下下载的是最新的cli版本。因此,请尝试降级您的软件包版本。至少为我工作过


另外,别忘了在package.json文件中降级包的版本

我认为您的问题源于类型脚本和模块版本不匹配。与您的问题非常相似,答案非常令人满意。

试试看

ng update @angular/core @angular/cli
然后,为了同步材质,运行:

ng update @angular/material

现在,在我的angular 8项目中添加@angular/flex布局时,我遇到了同样的问题

`npm install @angular/flex-layout --save`.
从现在起,该命令安装了flex layout软件包的第9个主要版本。我没有将其他所有内容升级到最新版本,而是通过安装解决了这个问题


在我的例子中,降级@angular/animations起作用了,如果你能负担得起,请运行命令

npm i @angular/animations@6.1.10
或者从此处的“版本”选项卡使用另一个可能适用于您的版本: 设置
“skipLibCheck”:在
tsconfig.json
中为true
解决了我的问题

"compilerOptions": {
    "skipLibCheck": true
}
快速解决方案: 更新package.json

"devDependencies": {
   ...
   "typescript": "~3.7.4",
 }
在tsconfig.json中

{
    ...,
    "angularCompilerOptions": {
       ...,
       "disableTypeScriptVersionCheck": true
    }
}
然后删除node_modules文件夹并用重新安装

npm安装


更多的访问

我正在做一个新的项目,遇到了类似的问题。
我刚刚运行了
ng更新--all
,我的问题就解决了。

在我的例子中,两个库的版本不匹配

我正在使用angular 7.0.0并已安装

"@swimlane/ngx-dnd": "^8.0.0"
这就造成了问题。将此库还原为

"@swimlane/ngx-dnd": "6.0.0"

为我工作。

我已经更新了
typescript
tslint
版本,并删除了我没有使用的软件包。这为我解决了问题


正如其他人在这里指出的,在不同的TypeScript版本中,从某些库生成的打字与您的TypeScript版本不兼容似乎是一个问题。

我在服务器打开时删除了几个组件(在运行ng serve命令后),出现了此错误。虽然我删除了routes组件和模块中的引用,但它并没有解决问题。然后我按照这些步骤:

  • 结束服务器
  • 恢复了那些文件
  • 运行ng serve命令(此时它解决了错误