angular - 用户代理嗅探分配模板时出错
问题描述
我正在尝试根据用户代理检测分配模板,但是每当我编译脚本时,都会收到以下错误:
ERROR in ./src/app/home/home.component.ts
Module not found: Error: Can't resolve ' (isMobile) ? './home.component.mobile.html' : './home.component.html''
移动.ts
const regex_mobile = new RegExp(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/, 'i');
export const isMobile = regex_mobile.test(window.navigator.userAgent);
home.component.ts
import { Component, OnInit } from '@angular/core';
import { isMobile } from '../../providers/mobile/mobile';
@Component({
templateUrl: (isMobile) ? './page.component.mobile.html' : './page.component.html'
})
export class HomeComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
我该如何解决?
解决方案
不用自己编写,只需使用 angular 的 cdk 包中的 angular 断点观察器
npm install @angular/cdk
import { Breakpoints, BreakpointState, BreakpointObserver } from '@angular/cdk/layout';
export class HomeComponent {
isMobile: Observable<BreakpointState> = this.breakpointObserver.observe(Breakpoints.Handset);
constructor(private breakpointObserver: BreakpointObserver) {}
}
在您的模板中,您可以使用async
管道进行检查
<div *ngIf="(isMobile | async).matches"></div>
推荐阅读
- twitter-bootstrap-3 - 与光滑滑块一起使用时,Bootstrap 选择下拉菜单会失真
- javascript - 对 Django 服务器 CORS 的获取请求仅阻止一个视图
- sh - 每天运行一次 sh 脚本
- python-3.x - 脚本忽略 Popen 方法
- node.js - 无法在 heroku 上使用 node.js 连接到 mongodb-atlas
- gremlin - 如何使用 JanusGraph 中的属性值检索所有顶点?
- javascript - ExpressJS 车把模板不显示数据
- javascript - 检查用户凭据
- scene - 是否可以在 Roku 或 SceneGraph 中实现 Authorize.Net 或任何其他支付网关?
- flutter - 你好“Widget AppState 中的路由设置”/hello.dart“,null。” 我得到了错误。你能帮我改一下代码并告诉我真相吗?