在我的Angular CLI组件中,在将变量定义为函数外部的“var”或“let”时出现错误。使用关键字“function”也会出错。如果我只是通过名字宣布它没关系。例如,在这个剥离的组件中:
import { Component } from '@angular/core';
@Component({
selector: 'home',
templateUrl: 'home.component.html',
styleUrls: ['home.component.scss']
})
export class HomeComponent {
constructor() {}
var aaa = '1'; // nope
let bbb = '2'; // nope
ccc = '3'; // ok
method1(){ // ok
let ddd = '4'; // ok
}
function method2(){ // nope
}
}
对于aaa,bbb和method2,它抛出错误:“[ts]意外的令牌。期望构造函数,方法,访问器或属性。”
我在这里做错了什么?我怀疑这是我项目的配置问题?
答案 0 :(得分:2)
因为您的功能(组件,服务,管道等)是类。
在类中,使用访问器定义属性,而不是作用域范围的变量。
这将有效
export class MyComponent {
private x;
public y;
protected z;
public doSmth() {
const b = 'B';
return b;
}
}
答案 1 :(得分:1)
您必须将该类的属性声明为public
或private
。
export class HomeComponent {
constructor() {}
public aaa = '1';
private bbb = '2';
ccc = '3'; // <-- by default this is public
method1(){ // ok
let ddd = '4'; // ok
}
private method1(){ // Available only within the class
}
public method2(){ // Accessible outside the class
}
}