Experimentar el mismo problema con las canalizaciones de fecha, porcentaje y moneda al usarlas en una plantilla:
Por ejemplo, estoy usando una tubería de porcentaje simple:
{{ .0237| percent:'1.2-2' }}Funciona cuando se ejecuta en Chrome, pero cuando lo implemento en un dispositivo iOS, arroja este error:
"EXCEPCIÓN: Error de referencia: no se puede encontrar la variable: Intl en [{{ {{ .0237| percent:'1.2-2' }} ..."
¿Alguien más se ha encontrado con este problema? ¡Cualquier sugerencia o ayuda sería muy apreciada! ¡Gracias!
Esto se debe a que se basa en la API de internalización, que actualmente no está disponible en todos los navegadores (por ejemplo, no en el navegador de iOS).
Consulte la tabla de compatibilidad .
Este es un problema conocido (beta.1).
Puede intentar usar un polyfill para Intl .
Para hacerlo, puede usar la versión CDN y agregar esto a su index.html:
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script>O si usa Webpack, puede instalar el módulo Intl con NPM:
npm install --save intlY agregue estas importaciones a su aplicación:
import 'intl'; import 'intl/locale-data/jsonp/en';Hay una solución rápida para esto. Agregar
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script> a su archivo index.html antes de la entrada <script src="cordova.js"></script> .
Vea esta respuesta de github https://github.com/angular/angular/issues/3333#issuecomment-203327903
O otra solución sería escribir esas tuberías usted mismo. Para la fecha, por ejemplo, puede usar moment.js, o aquí hay un ejemplo para la tubería de moneda:
import { Pipe, PipeTransform } from '@angular/core' @Pipe({ name: 'currency' }) export class CurrencyPipe implements PipeTransform { constructor() {} transform(value: string, currencyString: string ) { let stringOnlyDigits = value.replace(/[^\d.-]/g, ''); let convertedNumber = Number(stringOnlyDigits).toFixed(2); return convertedNumber + " " + currencyString; } }Esta tubería está transformando la moneda. La tubería de porcentaje funcionaría casi de la misma manera. La expresión regular está filtrando todos los dígitos, incluido el punto para números flotantes.