Angular navigator.bluetooth在typescript中不工作
我正在尝试调用chrome bluetooth API,但我没有通过typescript获得成功。我已经尝试过用html()应用一个文件,但也没有用。 但是,如果复制代码并将其粘贴到浏览器控制台中,则代码可以完美运行:( 控制台中出错(如果在Ts中运行代码): //Typescript/TS:Angular navigator.bluetooth在typescript中不工作,angular,typescript,google-chrome-devtools,web-bluetooth,Angular,Typescript,Google Chrome Devtools,Web Bluetooth,我正在尝试调用chrome bluetooth API,但我没有通过typescript获得成功。我已经尝试过用html()应用一个文件,但也没有用。 但是,如果复制代码并将其粘贴到浏览器控制台中,则代码可以完美运行:( 控制台中出错(如果在Ts中运行代码): //Typescript/TS: requestBluetooth() { (window.navigator as any).bluetooth.requestDevice({ filters: [{ services: [th
requestBluetooth() {
(window.navigator as any).bluetooth.requestDevice({ filters: [{ services: [this.PRINT_SERVICE_CODE] }] })
.then(device => {
return device.gatt.connect();
})
.then(server => {
return server.getPrimaryService(this.PRINT_SERVICE_CODE);
})
.then(service => {
return service.getCharacteristic('00002af1-0000-1000-8000-00805f9b34fb');
})
.then((characteristic) => {
this.sendTextData(characteristic);
})
.catch(error => console.log(error));
}
sendTextData(characteristic) {
// Get the bytes for the text
const encoder = new TextEncoder('UTF-8');
const text = encoder.encode('TESTETSETS' + '\u000A\u000D');
return characteristic.writeValue(text)
.then(() => console.log('Write done.'));
}
//在控制台浏览器中工作:
const PRINT_SERVICE_CODE = '000018f0-0000-1000-8000-00805f9b34fb';
const sendTextData = (function (characteristic) {
const encoder = new TextEncoder('UTF-8');
const text = encoder.encode('TESTETSETS' + '\u000A\u000D');
return characteristic.writeValue(text)
.then(() => console.log('Write done.'));
})
const request = (function () {
navigator.bluetooth.requestDevice({ filters: [{ services: [PRINT_SERVICE_CODE] }] })
.then(device => {
return device.gatt.connect();
})
.then(server => {
return server.getPrimaryService(PRINT_SERVICE_CODE);
})
.then(service => {
return service.getCharacteristic('00002af1-0000-1000-8000-00805f9b34fb');
})
.then((characteristic) => {
this.sendTextData(characteristic);
})
.catch(error => console.log(error));
})
request();
//项目信息:
角度CLI:6.0.8
节点:8.11.3
操作系统:linux x64
Angular:6.0.9是在事件处理程序中为用户手势(如单击按钮)调用的
requestBluetooth()
?我现在找不到它,但我想起了一个与Angular相关的类似问题,其中某些类型的点击处理程序没有保留用户手势标记。是的,在我在Angular生命周期中进行测试调用之前,我通过点击按钮调用函数就解决了这个问题,因此它不起作用头痛,我还是设法解决了,谢谢!
const PRINT_SERVICE_CODE = '000018f0-0000-1000-8000-00805f9b34fb';
const sendTextData = (function (characteristic) {
const encoder = new TextEncoder('UTF-8');
const text = encoder.encode('TESTETSETS' + '\u000A\u000D');
return characteristic.writeValue(text)
.then(() => console.log('Write done.'));
})
const request = (function () {
navigator.bluetooth.requestDevice({ filters: [{ services: [PRINT_SERVICE_CODE] }] })
.then(device => {
return device.gatt.connect();
})
.then(server => {
return server.getPrimaryService(PRINT_SERVICE_CODE);
})
.then(service => {
return service.getCharacteristic('00002af1-0000-1000-8000-00805f9b34fb');
})
.then((characteristic) => {
this.sendTextData(characteristic);
})
.catch(error => console.log(error));
})
request();