我正在使用带有angular2 +的 javascriptservices 模板,我正在尝试找到一个解决方案,用于将库导入我的组件,尝试访问窗口。 Javascript服务使用服务器端预呈现,因此您无法将库导入到立即尝试访问窗口的组件中,而不会导致窗口未定义错误。
目前,我正在尝试将dat.gui添加到我的组件中,但我还没有找到解决方案。 https://www.npmjs.com/package/dat.gui
有没有人知道我可以在客户端上加载dat.gui库的方法,并将其传递给我的组件以避免窗口未定义错误将其导入组件?
由于服务器端预渲染,这将在添加到我的组件时始终抛出错误。
+ (int)maxProfit:(NSArray *)prices {
int maxProfit = 0;
int bestBuy = 0;
int bestSell = 0;
int currentBestBuy = 0;
for (int i= 1; i < prices.count; i++) {
int todayPrice = [prices[i] intValue];
int bestBuyPrice = [prices[currentBestBuy] intValue];
if (todayPrice < bestBuyPrice) {
currentBestBuy = i;
bestBuyPrice = todayPrice;
}
if (maxProfit < (todayPrice - bestBuyPrice)) {
bestSell = i;
bestBuy = currentBestBuy;
maxProfit = (todayPrice - bestBuyPrice);
}
}
NSLog(@"Buy Day : %d", bestBuy);
NSLog(@"Sell Day : %d", bestSell);
return maxProfit;
}
或者 从'dat.gui'导入*作为dat;
答案 0 :(得分:0)
这是我用来确保浏览器使用窗口,文档,导航器,jQuery操作的方法。
import {PLATFORM_ID} from '@angular/core'
import {isPlatformBrowser } from '@angular/common'
....
constructor(@Inject(PLATFORM_ID) private platformId: Object){}
private isBrowser: boolean = isPlatformBrowser(this.platformId);
ngAfterViewInit(){
if (this.isBrowser) {
const dat = require('dat.gui');
const gui = new dat.GUI();
}
}