我正在学习Ionic 3,当我尝试制作一个检查唯一用户名的自定义验证器时,我遇到了这个错误.我尽我所能但无法解决这个问题.
CustomValidators.ts
import { Directive, Input } from '@angular/core';
import { FormControl, Validator, AbstractControl } from '@angular/forms';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import {Observable} from 'rxjs/Rx';
export class CustomValidators {
constructor(public http: Http){}
public hasUniqueEmail(
control: FormControl,
){
return this.http.get('assets/users.json')
.map(res => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}
}
Run Code Online (Sandbox Code Playgroud)
signup.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import …Run Code Online (Sandbox Code Playgroud) 我使用带有sw-toolbox库的服务工作者.我的PWA缓存除API查询(图像,css,js,html)之外的所有内容.但是如果某些文件有一天会被改变怎么办呢.或者如果将更改service-worker.js会怎样.应用程序应该如何知道文件的变化?
我的service-worker.js:
'use strict';
importScripts('./build/sw-toolbox.js');
self.toolbox.options.cache = {
name: 'ionic-cache'
};
// pre-cache our key assets
self.toolbox.precache(
[
'./build/main.js',
'./build/main.css',
'./build/polyfills.js',
'index.html',
'manifest.json'
]
);
// dynamically cache any other local assets
self.toolbox.router.any('/*', self.toolbox.cacheFirst);
// for any other requests go to the network, cache,
// and then only use that cached resource if your user goes offline
self.toolbox.router.default = self.toolbox.networkFirst;
Run Code Online (Sandbox Code Playgroud)
我不知道在PWA中更新缓存的常用方法是什么.也许PWA应该在后台发送AJAX请求并检查UI版本?
当我更新我的项目离子版本时,Android应用程序的状态栏在进入应用程序时无法显示任何图标:
进入app时:
谁知道怎么解决?我的信息:
cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils : 1.17.0
ionic (Ionic CLI) : 3.17.0
Run Code Online (Sandbox Code Playgroud)
全球套餐:
cordova (Cordova CLI) : 7.1.0
Run Code Online (Sandbox Code Playgroud)
本地包裹:
@ionic/app-scripts : 3.0.1
Cordova Platforms : android 6.3.0 ios 4.6.0-nightly.2017.11.22.24bfb734
Ionic Framework : ionic-angular 3.8.0
Run Code Online (Sandbox Code Playgroud)
系统:
ios-deploy : 1.9.2
ios-sim : 5.0.13
Node : v7.10.0
npm : 5.5.1
OS : macOS Sierra
Xcode : Xcode 9.0.1 Build version 9A1004
Run Code Online (Sandbox Code Playgroud)
环境变量:
ANDROID_HOME : not set
Run Code Online (Sandbox Code Playgroud)
其他:
backend : legacy
Run Code Online (Sandbox Code Playgroud) 经过大量搜索后,我运行时无法解决此错误:
ionc cordova run android -ls
OUTPUT:
ANDROID_HOME=/Users/lucianokrebs/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
No target specified and no devices found, deploying to emulator
No emulator specified, defaulting to Nexus_5_API_P
Waiting for emulator to start...
PANIC: Missing emulator engine program for 'x86' CPU.
Run Code Online (Sandbox Code Playgroud)
而模拟器永远不会启动
另外,当我跑:
$ ${ANDROID_SDK_ROOT}/tools/emulator -avd my-custom-avd
我有:
PANIC: Missing emulator engine program for 'x86' CPU.
但是,当我跑:
$ ${ANDROID_SDK_ROOT}/emulator/emulator -avd my-custom-avd
模拟器启动并正常工作
似乎cordova在尝试启动模拟器时设置了错误的路径.有人已经处理过了吗?
ionic info:
cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:
cordova (Cordova CLI) …Run Code Online (Sandbox Code Playgroud) 使用ionic3,angularfire2 v5
TypeError:Object(...)不是SwitchMapSubscriber._next上的SwitchMapSubscriber.project(http:// localhost:8100/build/vendor.js:73935:76)的函数(http:// localhost:8100/build/vendor.js:61778:27)在SwitchMapSubscriber.Subscriber.next(http:// localhost:8100/build/vendor.js:20750:18)的RefCountSubscriber.Subscriber._next(http:// localhost:8100/build/vendor.js:20786:26)在Subject.next(http:// localhost:8100/build/vendor)的RefCountSubscriber.Subscriber.next(http:// localhost:8100/build/vendor.js:20750:18). js:23237:25)在ConnectableSubscriber.Subscriber._next(http:// localhost:8100/build/vendor.js:20786:26)的ConnectableSubscriber.Subscriber.next(http:// localhost:8100/build/vendor. js:20750:18)在Asification.observe(http:// localhost:8100/build/vendor.js:51866:50)的AsyncAction.DelaySubscriber.dispatch(http:// localhost:8100/build/vendor.js: 76246:40)
home.ts
TypeError: Object(...) is not a function
at SwitchMapSubscriber.project (http://localhost:8100/build/vendor.js:73935:76)
at SwitchMapSubscriber._next (http://localhost:8100/build/vendor.js:61778:27)
at SwitchMapSubscriber.Subscriber.next (http://localhost:8100/build/vendor.js:20750:18)
at RefCountSubscriber.Subscriber._next (http://localhost:8100/build/vendor.js:20786:26)
at RefCountSubscriber.Subscriber.next (http://localhost:8100/build/vendor.js:20750:18)
at Subject.next (http://localhost:8100/build/vendor.js:23237:25)
at ConnectableSubscriber.Subscriber._next (http://localhost:8100/build/vendor.js:20786:26)
at ConnectableSubscriber.Subscriber.next (http://localhost:8100/build/vendor.js:20750:18)
at Notification.observe (http://localhost:8100/build/vendor.js:51866:50)
at AsyncAction.DelaySubscriber.dispatch (http://localhost:8100/build/vendor.js:76246:40)
Run Code Online (Sandbox Code Playgroud)
home.html的 …
我正在使用Ionic3,并且:
<span class="char-left">{{REVIEW_MAX_LENGTH-ratingModel.review.length}} characters left</span>
Run Code Online (Sandbox Code Playgroud)
我想class在填充另一个值时有条件地更改该值,即将ratingForm.controls.review.length > 0值更改为class="char-left-error".
我确实看过ng-class,但似乎无法让它发挥作用.
任何帮助赞赏.
在为桌面构建离子项目时,我使用以下命令
离子cordova构建浏览器--prod
这导致生成以下文件
建立/ main.js
但是,我希望能够在生成过程中自动为生成的文件添加版本号.所以最终会有类似的东西
建/ main.js?版本= 1.00
为了避免在每次prod构建之后需要清除浏览器缓存.
是否有这样的标志,还是我必须手动做的事情?
任何建议都会很棒!
编辑:
对于任何有兴趣的人,我的解决方案都在GitHub上!
https://github.com/RichardM99/ionic-3-version-build-file-hook
我想snapshot.val()基于用户密钥遍历我收到的数据并将它们推送到一个数组中.我尝试在for..in循环的帮助下这样做,
firebase.database().ref('\interests').child("I would like to dine with").on('value', (snapshot) => {
var data = snapshot.val();
if(snapshot.exists()){
for(let key in data){
console.log("data[key]",data[key]);
this.intVal.push(data[key]);
console.log("intVal",this.intVal);
}
}
})
Run Code Online (Sandbox Code Playgroud)
但我得到这样的东西,
如果你注意到,我的第一个数组在用户键下包含1个对象,而我的第二个数组在其用户键下包含3个对象.如何在单独的数组中推送每个值?
任何帮助将非常感激!谢谢
在尝试对API进行GET调用时,我遇到了Ionic 3的CORS问题.我正在使用Ionic本地服务器,在命令行中为live server运行ionic serve.
错误 否请求的资源上存在"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:8100 "因此不允许访问.
我尝试用代理设置更新"ionic.config.json",但似乎没有工作..
{
"name": "projectLeagueApp",
"app_id": "47182aef",
"type": "ionic-angular",
"integrations": {
"cordova": {}
},
"proxies": [
{
"path":"/games",
"proxyUrl": "https://api-2445582011268.apicast.io/games/"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的数据服务
import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class DataProvider {
headers = new Headers({'user-key': '1234567890123'});
options = new RequestOptions ({headers: this.headers});
limit: number = 50;
constructor(public http: Http) {
console.log('Hello DataProvider Provider');
}
getGames(genre, offset_num) {
let genre_id …Run Code Online (Sandbox Code Playgroud) Apple已经欺骗了我,即使我禁用了自动更新,它现在已经删除了最新的XCode版本(版本10.0(10A255))和依赖项.结果是,即使在删除(ionic cordova platform remove ios)并重新添加平台之后,我也无法构建我的应用程序.
它现在失败,出现以下错误.
onic cordova run ios --debug --target="iPhone-8" --consolelogs
...
<path>/platforms/ios/build/emulator/MyApp.app/Info.plist file not found.
[ERROR] An error occurred while running cordova run ios --debug --target iPhone-8 (exit code 1).
ionic --version
3.20.0
Run Code Online (Sandbox Code Playgroud)
----编辑
跑了verbose并收到:No scripts found for hook "before_deploy".作为失败的附加信息.
-----编辑------
请在这里查看更多细节.我能够从头开始重现它/一个空白的应用程序模板 空白应用程序无法调试构建 - 找不到/Info.plist文件
ionic3 ×10
angular ×5
javascript ×4
cordova ×3
android ×2
ionic2 ×2
angularfire2 ×1
cors ×1
firebase ×1
ios ×1
json ×1
statusbar ×1
sw-toolbox ×1
typescript ×1
xcode10 ×1