我想编写一个单元测试,通过在输入字段中设置值然后检查关联的实例成员来与 Angular 2/Ionic 2 离子输入字段交互。
具体来说,我想:
我将它用于普通的 HTML 输入字段,但是我确实了解有关使用离子输入字段的一些内容。
我的单元测试和测试组件:
/**
* Form Tests
*/
import {Component} from '@angular/core';
import { ComponentFixture, TestBed, async, fakeAsync, tick } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import {
AbstractControl,
FormControl,
FormGroup,
FormsModule,
ReactiveFormsModule
} from '@angular/forms';
import {dispatchEvent} from '@angular/platform-browser/testing/browser_util';
// Ionic imports
import {
App,
MenuController,
NavController,
Platform,
Config,
Keyboard,
Form,
IonicModule
} from 'ionic-angular';
describe( …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Ionic + Angular 5 项目。
我需要动态加载一些组件。按照Angular 文档中的动态组件加载器示例,我能够成功加载组件并显示它们。
但是,我需要能够遍历加载的组件。
在创建和销毁子组件时,我可以轻松地在父组件中维护自己的组件列表,但在我看来,这很丑陋,而不是“角度方式”。
经过大量实验和研究,似乎我无法使用 @ViewChildren 访问动态添加的组件,因为它们有自己的视图。ViewChildren 未找到动态组件
这样对吗?
我可以使用 viewContainerRef.get() 遍历子视图并检索 ViewRefs。但是似乎没有办法在给定 ViewRef 的情况下获得对组件的引用?
我注意到 ViewRef 的“rootNodes”属性,但是该属性没有记录在 Angular 文档视图参考中。但是,它记录在 EmbeddedViewRef 文档嵌入式视图参考中,但似乎仍然没有让我访问组件。
所以问题是当我有一个动态添加子组件的父级时,我如何从父级循环到子组件(这样我就可以在子级中调用我的方法之一)?我怀疑是我遗漏了一些愚蠢的简单东西,有一些根本的误解,或者我应该使用不同的模式。
我修改了 Dynamic Component Loader 示例以突出显示我正在尝试做的事情。修改后的动态组件加载器
考虑以下可满足的div.
<div contenteditable="true">
<div>bold text</div><div>bold text</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我将光标定位在两个div之间并开始输入,则文本将以粗体显示,而不是在两个div之间插入新的文本节点.如果你回到家并尝试在第一个div前面输入一些东西,也会发生同样的情况.它成为第一个div的一部分.
如果我检查从选择返回的范围的startContainer,我得到一个div的内容而不是我期望的空文本节点.
问题是为什么会发生这种情况?如何选择div之间的位置,以便在输入内容时不会加粗?(显然我可以添加一个空间,这可以解决问题,但这很难看.)
如果您在状态更新框中输入@mention并按HOME,则可以在Facebook上看到此工作正常.如果键入文本将不会突出显示.
我唯一能想到的是拦截按键并以编程方式插入文本节点,但这看起来很难看.
我疯狂地搜索,找不到任何能证明这是如何工作的参考资料.显然有一些我不理解的东西,而且这方面的文档确实缺乏.
(我希望能够做的是检测光标即将进入其中一个div并跳过它.如果两个div正好相邻,则光标会跳转到其中一个div中搞砸了工程.)
关于我正在尝试做什么的更多信息:http://a-software-guy.com/2012/12/the-horrors-of-cursor-positioning-in-contenteditable-divs/
我要求使用军用通用访问卡/个人识别验证系统启用登录到新的Drupal供电站点.
我遇到过这个模块:http://drupal.org/sandbox/larquin/1292622但是没有代码.
是否有适用于Drupal的模块?如果没有,有没有人知道任何PHP(或任何其他语言)示例代码,我可以看看基于模块?
或者,是否有另一种方法来支持这种不需要专用模块的身份验证方法?(例如ActiveDirectory?Apache配置?等)
假设我有一个Angular 2应用程序,该应用程序包装了第三方库(如Leaflet Mapping API),该库由它自己进行DOM管理。
我正在从Angular调用第三方库组件。
但是,在Leaflet示例中,如果要渲染我的Angular组件之一/ inside /第三方库渲染的某些标记怎么办?
例如,是否可以在Leaflet弹出窗口中从Angular 2应用程序渲染组件?http://leafletjs.com/reference-1.1.0.html#popup
还是在一般情况下,如果我引用了Angular外部的DOM元素,是否有API可以将Angular组件附加到该DOM元素并进行管理?
我注意到Leaflet已经转向使用ES6模块和汇总.
http://leafletjs.com/2017/06/27/leaflet-1.1.0.html
鉴于此,我将尝试将LeafLet和各种插件以及我的应用程序捆绑到一个文件中.
我使用传单站点中最简单的教程作为测试用例.
我遇到的问题是,当我创建捆绑包时,会生成以下错误:
?? The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten
https://github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined
node_modules/leaflet/dist/leaflet-src.js (9:2)
7: typeof define === 'function' && define.amd ? define(['exports'], factory) :
8: (factory((global.L = global.L || {})));
9: }(this, (function (exports) { 'use strict';
Run Code Online (Sandbox Code Playgroud)
对于我的测试,index.js文件是:
import 'leaflet';
function leafletTest() {
var mymap = L.map('mapid').setView([51.505, -0.09], 13);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
maxZoom: 18,
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' …Run Code Online (Sandbox Code Playgroud) angular ×3
javascript ×3
dom ×2
leaflet ×2
cac ×1
cursor ×1
ecmascript-6 ×1
php ×1
range ×1
rollupjs ×1
typescript ×1