我试图在map操作符调用的方法中返回之前更改我的数据,我发现该方法之外的所有其他变量都是 undefined
我在这里写了一个简单的代码来表示我的意思,记录的测试变量返回为undefined
:
import {Observable} from "rxjs/Observable";
import {Injectable} from "@angular/core";
import {Http, Response} from "@angular/http";
@Injectable()
export class DataService {
private API_URL= 'url...';
private test = 1;
constructor(private http: Http) {}
getData(): Observable<any> {
return this.http.get(this.API_URL)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
console.log(test);
return body.data || {};
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会发生这种情况,如果它不是改变获取数据的方式,我怎么能在服务中做到这一点(而不是在订阅者组件中,因为我想根据与订阅者组件无关的另一个变量来更改数据)
我想知道是否可以使用可chrome.send()
在 chrome 内部页面中访问的函数(如 )chrome://version
来发送命令,例如chrome.send('restartBrowser')
向 chrome 内部页面之外和我自己的自定义网页内部的 chrome 浏览器发送命令。
我想知道这段代码有什么区别:
export class SomeDirective implements OnInit {
constructor(private _elRef: ElementRef){}
ngOnInit(): any {
this._elRef.nativeElement.style.backgroundColor = 'green';
}
}
Run Code Online (Sandbox Code Playgroud)
和这个:
export class SomeDirective implements OnInit {
constructor(private _elRef: ElementRef, private _renderer: Renderer){}
ngOnInit(): any {
this._renderer.setElementStyle(this._elRef, 'background-color', 'green');
}
}
Run Code Online (Sandbox Code Playgroud)
我知道第二个比第一个有一些优点,我只需要知道这些优点具体是什么。