在typescript angular 2中获取set变量

时间:2018-05-21 16:01:07

标签: typescript

我正在使用角度2.我不明白设置变量。变量_isLoading在“this.observable.filter((event)”中设置但在模板中没有变化 这是代码ts:

<div class="app layout-fixed-header">
    <sidebar-panel-left></sidebar-panel-left>
    <header-navbar></header-navbar>
    <div class="clearfix"></div>
    <div class="main-panel">
        <div class="main-content">
            <spinner *ngIf="_isLoading"></spinner>
            <span (click)='ChangeIsLoading(_isLoading)'>{{_isLoading}}</span>
        </div>
    </div>
    <router-outlet></router-outlet>
</div>

这是模板:

@Injectable()
export class ApiService {
 private _secureComponent: SecureComponent = new SecureComponent();

    constructor(private http: Http) {
        this._secureComponent.on('event1', (event)=>{
        });
    }
setLoaderAnimation(isLoading) {
        this._secureComponent.broadcast({
            name: 'setLoading',
            isLoading: isLoading
        });
    }
public apiGet(url) {
        this.setLoaderAnimation(true);
        return new Promise((response, reject) => {
            let options = new RequestOptions({ method: RequestMethod.Get, headers: this.getHeaders() });
            this.http.get(url, options).toPromise()
                .then((value) => {
                    response(value.json());
                    this.setLoaderAnimation(false);
                }).catch(function (value) {
                    reject(value);
                });
        });
    }
}

这是ApiService(从服务器获取数据然后变量更改值):

class RowProxy {
private:
    int* row;

public:
    explicit RowProxy(int* row) : row(row) {}
    int& operator[](int y) {
        return row[y];
    }
};

class A2D {
private:
  int a[10][10]; // This is irrelevant - it's just to simplify the example
public:
  RowProxy operator[](int x) {
      return RowProxy{a[x]};
  }
};

1 个答案:

答案 0 :(得分:0)

当您希望子组件自动设置值并刷新时,设置值非常有用。在这里,您希望组件显示加载与否。第一个错误是在服务中声明那些var。服务必须返回promise或observable,以确保返回数据。因此,您最好更改加载变量位置以将其放入组件中。您可以在http get或返回响应时更改它。

为了使你的情况更清楚,创建一个组件来从主组件(将获取数据的人)调用并创建一个var _myVar和一个 @Input set myVar(data: type) { this._myVar = data }

每次父母修改其值时,您的子组件都可以拥有独立的行为(isLoading)

<app-child [myVar]="isLoading"></app-child>

只需从管理加载的组件调用您的服务;)