Tho*_*oot 4 cordova typescript ionic2 ionic3 angular
我在Ionic 2 App中使用SMS消息。我拥有最新版本的Cordova CLI和最新版本的Ionic 2。
当我使用
<a href="sms:14038000000"><button outline><ion-icon name="ios-chatbubbles"></ion-icon></button></a>
Run Code Online (Sandbox Code Playgroud)
它可以像短信一样正常工作:14038000000,
当我使用
<ion-card *ngFor="let item of corp">
<div class="contact-name">
{{ item.name}}
</div>
<div class="contact-content">
<a href="sms:{{item.sms}}"><button outline><ion-icon name="ios-chatbubbles"></ion-icon></button></a>
</div>
</ion-card>
Run Code Online (Sandbox Code Playgroud)
短信显示为不安全:sms:14038000000
在ionic 1 app.js中,我使用了
.config(function($compileProvider){
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|http?|ftp|mailto|file|sms|tel):/);
})
Run Code Online (Sandbox Code Playgroud)
解决这个问题。
Ionic 2 app.ts是否有类似的解决方案
UPADTE
就像@George Huang提到的那样,在Angular RC 6中DomSanitizationService被重命名为DomSanitizer。
为了避免Angular2将您标记href为不安全,您需要做的就是这样导入DomSanitizer:
import { DomSanitizer } from '@angular/platform-browser';
Run Code Online (Sandbox Code Playgroud)
在构造函数中创建一个实例:
constructor(private sanitizer: DomSanitizer, ...) {
//...
}
Run Code Online (Sandbox Code Playgroud)
然后使用如下bypassSecurityTrustUrl(...)方法:
sanitize(url:string) {
return this.sanitizer.bypassSecurityTrustUrl(url);
}
Run Code Online (Sandbox Code Playgroud)
最后,您认为使用该方法:
<ion-content>
<ion-card *ngFor="let item of corp">
<div class="contact-name">
{{ item.name}}
</div>
<div class="contact-content">
<a [href]="sanitize('sms:' + item.sms)"><button outline><ion-icon name="ios-chatbubbles"></ion-icon></button></a>
</div>
</ion-card>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
旧答案:
为了避免Angular2将您标记href为不安全,您需要做的就是这样导入DomSanitizationService:
import { DomSanitizationService } from '@angular/platform-browser';
Run Code Online (Sandbox Code Playgroud)
在构造函数中创建一个实例:
constructor(private sanitizer: DomSanitizationService, ...) {
//...
}
Run Code Online (Sandbox Code Playgroud)
然后使用如下bypassSecurityTrustUrl(...)方法:
sanitize(url:string) {
return this.sanitizer.bypassSecurityTrustUrl(url);
}
Run Code Online (Sandbox Code Playgroud)
最后,您认为使用该方法:
<ion-content>
<ion-card *ngFor="let item of corp">
<div class="contact-name">
{{ item.name}}
</div>
<div class="contact-content">
<a [href]="sanitize('sms:' + item.sms)"><button outline><ion-icon name="ios-chatbubbles"></ion-icon></button></a>
</div>
</ion-card>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
697 次 |
| 最近记录: |