我在模板驱动形式中定义异步验证器时遇到问题.
目前我有这样的输入:
<input type="text" ngControl="email" [(ngModel)]="model.applicant.contact.email" #email="ngForm" required asyncEmailValidator>
Run Code Online (Sandbox Code Playgroud)
使用指向此类的验证器选择器asyncEmailValidator:
import {provide} from "angular2/core";
import {Directive} from "angular2/core";
import {NG_VALIDATORS} from "angular2/common";
import {Validator} from "angular2/common";
import {Control} from "angular2/common";
import {AccountService} from "../services/account.service";
@Directive({
selector: '[asyncEmailValidator]',
providers: [provide(NG_VALIDATORS, {useExisting: EmailValidator, multi: true}), AccountService]
})
export class EmailValidator implements Validator {
//https://angular.io/docs/ts/latest/api/common/Validator-interface.html
constructor(private accountService:AccountService) {
}
validate(c:Control):{[key: string]: any} {
let EMAIL_REGEXP = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
if (!EMAIL_REGEXP.test(c.value)) {
return {validateEmail: {valid: false}};
}
return null;
/*return new Promise(resolve => …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Spyne 框架和此示例代码部分在 python3 中托管 SOAP 服务:
class HelloWorldService(ServiceBase):
@srpc(Unicode, Integer, _returns=Iterable(Unicode))
def say_hello(name, times):
for i in range(times):
yield 'Hello, %s' % name
application = Application([HelloWorldService],
tns='spyne.examples.hello',
in_protocol=Soap11(),
out_protocol=Soap11()
)
if __name__ == '__main__':
# You can use any Wsgi server. Here, we chose
# Python's built-in wsgi server but you're not
# supposed to use it in production.
from wsgiref.simple_server import make_server
wsgi_app = WsgiApplication(application)
server = make_server('0.0.0.0', 8000, wsgi_app)
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
它可以工作,但它只使用一个命名空间,tns='spyne.examples.hello'.
我可以在这一行定义多个服务:
application = Application([HelloWorldService, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在下面序列化我的对象,但没有列表的根名称我无法序列化它。Hub、Switch 和 Device 是从 AbstractNode 派生的类型。
[XmlRoot(ElementName = "Roothub")]
public class RootHub
{
[XmlArrayItem(typeof(Hub), ElementName = "Hub20")]
[XmlArrayItem(typeof(Switch), ElementName = "Switch")]
[XmlArrayItem(typeof(Device), ElementName = "Device")]
public List<AbstractNode> DevicesList { get; set; }
}
[XmlInclude(typeof(Hub))]
[XmlInclude(typeof(Device))]
[XmlInclude(typeof(Switch))]
public abstract class AbstractNode
{
[XmlAttribute]
public string Tag { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
输出:
<RootHub>
<DevicesList>
<Hub20 Tag="HUB1" VidPid="VID_0000&PID_0000"/>
<Switch Tag="SWITCH1" />
<Device Tag="MOUSE" VidPid="VID_0000&PID_0000"/>
</DevicesList>
</RootHub>
Run Code Online (Sandbox Code Playgroud)
但我需要的是这个:
<RootHub>
<Hub20 Tag="HUB1" VidPid="VID_0000&PID_0000"/>
<Switch Tag="SWITCH1" />
<Device Tag="MOUSE" VidPid="VID_0000&PID_0000"/>
</RootHub>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个问题的解决方案在 C# XML …
我想知道是否可以使用LINQ进行远程排序,例如我有数字列表:
List< int > numbers = new List< int >
只需使用即可numbers.Skip(3).Take(4).OrderBy(blabla),但会返回仅包含这4个数字的新列表。是否可以以某种方式强迫LINQ在不返回新的“部分”列表的情况下自行工作或接收带有排序部分的完整列表?感谢您的回答!
c# ×2
angular ×1
asynchronous ×1
linq ×1
python ×1
soap ×1
sorting ×1
spyne ×1
sql-order-by ×1
typescript ×1
validation ×1
xml ×1