programing

각도 주입식 장식기 - 인수가 0인 것으로 예상되지만 1개임

prostudy 2022. 3. 23. 00:23
반응형

각도 주입식 장식기 - 인수가 0인 것으로 예상되지만 1개임

나는 이제 막 Angle의 기본 자습서를 시작하려고 하는데 작은 컴파일 문제가 있어.

나는 Angul의 웹사이트에 있는 튜토리얼을 따르고 있다.나는 종속성 주입 부분이 컴파일하기 싫어서 꼼짝 못하고 있다.

튜토리얼에서 다음 기능을 사용하여 서비스를 만들도록 요청하십시오.

ng generate service hero

이 서비스에서 다음과 같은 장식가를 사용하십시오.

@Injectable()

그리고 나서 그들은 다음과 같이 그 장식가에게 매개변수를 추가해 달라고 요청한다.

@Injectable({
  providedIn: 'root'
})

그렇게 하려고 하면 다음과 같은 TypeScript 오류가 발생함:

오류 TS2554: 0 인수가 예상되지만 1이 나왔다.내가 사용하는 버전은 다음과 같다.

Angular CLI: 1.7.4
Node: 9.5.0
OS: win32 x64
Angular: 5.2.10
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.7.4
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.3.2
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.2
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
typescript: 2.5.3
webpack: 3.11.0

왜 매개 변수를 수락하지 않는지 아십니까?

미리 고마워!

이것은 Angular 6의 새로운 특징이다.

@Injectable({
  providedIn: 'root'
})

두 가지 옵션:

  1. 각도 5 설명서를 참조하십시오.(@r-richards 참고 사항 - 왼쪽 탐색기 하단의 드롭다운에서 문서 버전을 v5로 변경)

  2. 프로젝트를 각도 6로 업그레이드하여 문제 해결

공식 각도 업그레이드 가이드를 따르십시오.

현재 사용 중인 Angular 버전과 업그레이드하려는 버전을 선택하는 간단한 양식을 작성하십시오.그런 다음 업그레이드를 수행하는 데 필요한 단계 목록을 보여준다.모든 업그레이드에 대해 본 안내서를 따르십시오.

https://update.angular.io/

여기에 이미지 설명을 입력하십시오.

다음은 Angular 5에서 Angular 6으로 업그레이드할 때 찍은 노트 입니다.

주행 거리는 구성에 따라 달라질 수 있다.아래 기사를 몇 개 링크해서 도움이 되었다.

npm 업데이트(Node Package Manager)

npm install npm@latest -g 

업가르드 노드

Windows 및 Mac 사용자의 경우 가장 쉬운 방법은 공식 노드 설치 프로그램이다.또는 Linux/unix는 아래 문서를 참조하십시오.

https://nodejs.org/en/download/

Upgarde Angular CLI 글로벌 및 로컬

npm install -g @angular/cli
npm install @angular/cli

패키지 업데이트.json

ng update @angular/cli

업데이트 @Agangular/Core

ng update @angular/core

사용 중인 경우 각도 재료 업데이트

ng update @angular/material

업그레이드해야 할 수 있는 다른 패키지

npm outdated

오래된 모든 패키지 업데이트

npm update

또는 특정 패키지를 업그레이드하려면 다음과 같이 하십시오.

npm update <package name>

angu-cli.json 파일을 angule.json으로 변환해야 할 수 있음

ng update @angular/cli --migrate-only --from=1.7.4

그리고 @Sharondio가 지적하듯이, IDE를 다시 시작하는 것은 결코 나쁘지 않으며, 만약 여러분이 이상한 것을 보고 있다면, 이 시점에서 아마도 여러분의 컴퓨터 전체를 다시 시작하는 것은 나쁘지 않을 것이다.

참조:

노드 업그레이드

http://www.hostingadvice.com/how-to/update-node-js-latest-version/

각도 업그레이드

https://vitalflux.com/upgrade-angular-5-app-angular-6/

기타 문제 해결 단계

https://stackoverflow.com/a/49811824/151325

나도 이런 문제가 있었고, app.module.ts에 있는 "Providers"의 클래스 서비스 이름을 포함하여 해결했다.

다음과 같은 경우:

@NgModule({
    declarations:[

    ],
    imports:[
        CommonModule,
        HttpClientModule
    ],
    exports:[

    ],
    providers: [
        PostListService 
    ]
})

각도 튜토리얼에 적용할 수 있는 가장 간단한 솔루션은 다음과 같다.

1) @Injectable decorator에서 예기치 않은 인수를 제거하십시오(각도 버전으로 인해).

사용 안 함:

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

그러나 사용:

@Injectable()
export class HeroService {

2) app.module.ts에 HeroServiceMessageService를 추가하여 HeroService 제공자 없음!종속 주입으로 인한 실행 오류:

app.module.ts @NgModule 메타데이터:

  providers: [
    HeroService,
    MessageService
  ],

각도 5의 경우 파라미터를 설정하지 않고 다음과 같이 떠날 필요가 있다.

@Injectable(/* without any parameter here for angular 5 */)

참조URL: https://stackoverflow.com/questions/50307628/angular-injectable-decorator-expected-0-arguments-but-got-1

반응형